Языки программирования

Кортежи в C#

Кортежи предоставляют удобный способ для работы с набором значений, который был добавлен в версии C# 7.0. Кортеж представляет набор значений, заключенных в круглые скобки:
var tuple = (5, 10);
В отличие от массивов (которые содержат объекты одного типа), кортежи могут содержат объекты самых разных типов. В .NET 4 определены восемь обобщённых классов Tuple и один статический класс Tuple, который служит «фабрикой» кортежей.

Существуют разные обобщённые классы 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();
        }

    }
    
}
Самоучитель по C#