在 C# 中,元組是一種資料結構,用來組織資料,可包含兩個或多個任何型別的欄位。
元組通常是在一組括號內放入 2 個或多個以逗號分隔的運算式來建立。
string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);
元組可用於賦值和初始化操作,也可以作為回傳值或方法引數。
欄位可以透過點語法取出。預設情況下,第一個欄位是Item1,第二個是Item2,依此類推。非預設名稱將在下面討論。
// initialization
(int, int, int) vertices = (90, 45, 45);
// assignment
vertices = (60, 60, 60);
// return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
return (num1 == num2, num1 > num2 ? num1 : num2);
}
// method argument
int Add((int, int) operands)
{
return operands.Item1 + operands.Item2;
}
欄位名稱如Item1等,會讓程式碼不易閱讀。下面的程式碼展示了 2 種為元組欄位命名的方式。另外請注意,在下面的程式碼中,var可以搭配元組使用,而且型別會被推斷出來。這對具名與未具名欄位的元組也同樣適用。
// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;
// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;
這個練習要你分析電話號碼。
你要實作 2 個功能。
傳遞給這些常式的電話號碼保證為 NNN-NNN-NNNN 格式,例如 212-515-9876,且不為 null。
你的分析應該回傳 3 筆資料:
實作(靜態)方法PhoneNumber.Analyze()來產生電話號碼資訊。
PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")
使用第 1 項任務產生的電話號碼資訊,實作(靜態)方法PhoneNumber.IsFake()來判斷這個電話號碼是否為假號碼。
PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true