2010-02-24 5 views

ответ

29

Анонимные типы неизменяемы по дизайну.

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

Кроме того, это сделает их ненадежными в словаре, поскольку хэш-код может измениться после создания.
Многие методы LINQ используют словари, и, особенно с задержкой оценки, LINQ с изменяемыми типами может привести к тонким загадочным ошибкам.

+0

Это было быстро :-) Thnx – Marko

+7

Обратите внимание, что анонимные типы в VB допускают частичную мутацию. В VB вы можете указать, какие части анонимного типа изменяемы; сгенерированный код не будет использовать изменяемые биты как часть хеш-кода/равенства, поэтому вы не получите проблему «потерянный в словаре». Мы решили не реализовывать эти расширения в C#. –

+0

Я этого не знал; Благодарю. – SLaks

Смежные вопросы