Анонимный тип и кортеж

Каково различие между анонимным типом и кортежем?

28
задан DOK 1 February 2011 в 14:14
поделиться

2 ответа

Анонимные типы имеют имена свойств, которые несут дополнительную информацию, для кортежей у вас ее нет. Однако вы не можете использовать анонимные типы в качестве возвращаемых значений и параметров и можете использовать кортежи.

Пример хорошего кортежа - это когда вы хотите вернуть несколько значений. @Petar Minchev упоминает эту ссылку , которая дает хороший пример.

Вам может понадобиться метод Find () , который возвращает и индекс, и значение. Другой пример - это положение в 2-х или 3-х плоскостях.

18
ответ дан 28 November 2019 в 02:43
поделиться

Кортеж не является анонимным типом, это именованный тип. Вы можете использовать его как возвращаемый тип или аргумент метода. Этот код действителен:

Tuple<int, string> GetTuple()
{
    return Tuple.Create(1, "Bob");
}

Вы не можете сделать это с анонимным типом, вам придется вместо этого вернуть System.Object . Обычно вам приходится использовать Reflection для этих объектов (или dynamic в .NET 4), чтобы получить значения отдельных свойств.

Кроме того, как упоминает Брайан, имена свойств в кортеже фиксированы - они всегда Item1 , Item2 , Item3 ] и так далее, тогда как с анонимным типом вы можете выбирать имена. Если вы напишете:

var x = new { ID = 1, Name = "Bob" }

, то анонимный тип на самом деле имеет свойства ID и Name . Но если вы напишете:

Tuple.Create(1, "Bob")

, то полученный кортеж будет иметь только свойства Item1 и Item2 .

20
ответ дан 28 November 2019 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: