С# 7.0 ValueTuples против анонимных типов
Глядя на новый С# 7.0 ValueTuples, мне интересно, полностью ли они заменит Anonymous Types
. Я понимаю, что ValueTuples
являются структурами и поэтому ведут себя немного иначе, чем Anonymous Types
, которые являются классами. Однако я не вижу прецедента, в котором я бы предпочел использовать Anonymous Type
над a ValueTuple
.
Существуют ли какие-либо варианты использования, когда использование Anonymous Type
все равно будет полезно использовать ValueTuples
в С# 7.0?
Ответы
Ответ 1
Анонимные типы неизменяемы, кортежи - нет. Это отражается в том, что анонимные типы выставляют свойства, кортежи выставляют поля. Связывание данных почти всегда требует свойств.
Множество существующих кодов работает только со ссылочными типами, а не с типами значений. Что особенно важно, это прогнозы в Entity Framework: прогнозы для типов значений просто не реализованы.