У 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")
Реалізуйте (статичний) метод PhoneNumber.IsFake(), який визначає, чи є номер телефону фальшивим, використовуючи інформацію про номер, отриману в завданні 1.
PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Зареєструйтеся на Exercism, щоб вивчати й опановувати C#, а також 62 концепції178 вправ та справжнє наставництво від людей, і все це безкоштовно.