Я только что прочитал эту статью из журнала MSDN: Building Tuple
Вот выдержки:
Предстоящий 4.0 выпуск Microsoft
.NET Framework представляет новый тип
называется System.Tuple. System.Tuple является
коллекция фиксированного размера
неоднородно типизированные данные.
Как и массив, кортеж имеет фиксированный
размер, который нельзя изменить, как только он
был создан. В отличие от массива, каждый
Элемент в кортеже может быть другим
тип, и кортеж может гарантировать
строгая типизация для каждого элемента.
1017 *
Уже есть один пример
кортеж плавает вокруг Microsoft
.NET Framework, в
System.Collections.Generic namespace:
KeyValuePair. Хотя KeyValuePair можно рассматривать как одно и то же
как Tuple, так как они оба
типы, которые содержат две вещи,
KeyValuePair чувствует себя отличным от
Кортеж, потому что это вызывает отношения
между двумя значениями, которые он хранит (и
не без оснований, поскольку он поддерживает
Словарный класс).
Кроме того, кортежи могут быть произвольно
размер, тогда как KeyValuePair содержит только
две вещи: ключ и значение.
Хотя некоторые языки, такие как F #, имеют специальный синтаксис для кортежей, вы можете использовать новый общий тип кортежа из любого языка. Возвращаясь к первому примеру, мы видим, что, несмотря на полезность, кортежи могут быть слишком многословными в языках без синтаксиса для кортежа:
class Program {
static void Main(string[] args) {
Tuple<string, int> t = new Tuple<string, int>("Hello", 4);
PrintStringAndInt(t.Item1, t.Item2);
}
static void PrintStringAndInt(string s, int i) {
Console.WriteLine("{0} {1}", s, i);
}
}
Используя ключевое слово var из C # 3.0, мы можем удалить сигнатуру типа в переменной tuple, что позволяет получить несколько более читаемый код.
var t = new Tuple<string, int>("Hello", 4);
Мы также добавили некоторые фабричные методы в статический класс Tuple, который облегчает создание кортежей на языке, который поддерживает вывод типов, например C #.
var t = Tuple.Create("Hello", 4);