Кортежи предоставляют удобный способ для работы с набором значений, который был добавлен в версии C# 7.0. Кортеж представляет набор значений, заключенных в круглые скобки:
var tuple = (5, 10);
В отличие от массивов (которые содержат объекты одного типа), кортежи могут содержат объекты самых разных типов. В .NET 4 определены восемь обобщённых классов Tuple и один статический класс Tuple, который служит «фабрикой» кортежей.
Существуют разные обобщённые классы Tuple для поддержки различного количества элементов, например, Tuple<T1> содержит один элемент, Tuple<T1, T2> — два элемента и т.д.
Элементы кортежа доступны через свойства Item1, Item2. Если имеется более восьми элементов, которые нужно включить в кортеж, можно использовать определение класса Tuple с восемью параметрами.
Последний параметр называется TRest, в котором должен передаваться сам кортеж. Поэтому есть возможность создать кортежи с любым количеством параметров. Рассмотрим пример использования кортежей:
Существуют разные обобщённые классы Tuple для поддержки различного количества элементов, например, Tuple<T1> содержит один элемент, Tuple<T1, T2> — два элемента и т.д.
Элементы кортежа доступны через свойства Item1, Item2. Если имеется более восьми элементов, которые нужно включить в кортеж, можно использовать определение класса Tuple с восемью параметрами.
Последний параметр называется TRest, в котором должен передаваться сам кортеж. Поэтому есть возможность создать кортежи с любым количеством параметров. Рассмотрим пример использования кортежей:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
// Данный метод возвращает кортеж с 4-мя
// разными значениями
static Tuple Corteg(int a, string name)
{
int sqr = a * a;
float sqrt = (float)(Math.Sqrt(a));
string s = "Привет, " + name;
char ch = (char)(name[0]);
return Tuple.Create(sqr, sqrt, s, ch);
}
static void Main(string[] args)
{
var myTuple = Corteg(35, "Viktor");
Console.WriteLine("{0}\n35 в квадрате: {1}\nКвадратный корень из 35: "
+ "{2}\nПервый символ в имени: {3}\n", myTuple.Item3, myTuple.Item1, myTuple.Item2, myTuple.Item4);
Console.ReadLine();
}
}
}