Вы можете думать, что кортежи немного похожи на анонимные типы, но без имен - с возможностью указывать типы возвращаемых данных и т. Д. Они полезны, когда вам нужен специальный многозначный тип данных, но вы хотите быть в состоянии указать это как тип возврата метода.
Например, int.TryParse
может иметь подпись
static Tuple<int, bool> TryParse(string text)
В основном вы хотите вернуть int
и bool
. Существующая подпись использует параметр out
, чтобы обойти тот факт, что вы можете вернуть только одно значение - кортежи - это еще один вариант. Точно так же KeyValuePair<TKey, TValue>
- это просто пара значений.
Лично я хотел бы увидеть другой вариант: краткий способ достижения семантики анонимных типов (неизменяемость, именованные свойства, равенство и т. Д.), Но с именем.