Почему анонимные типы в .NET реализованы как ссылочные типы?

Поскольку анонимный тип в любом случае доступен только для чтения, было бы более эффективно, если бы они реализовали их как структуры так что запросы linq не должны создавать тонны временных объектов:

// This doesn't make any sense, it is just for demonstration
var result = thingies
.Select(x=> new {A = 1, B = 2, C = 3});

Btw. Я получил эту идею, когда прочитал это

РЕДАКТИРОВАТЬ:

Лучше всего было бы, если бы компилятор, в зависимости от размера и использования переменной (должен быть передан множеству методов), решал делать, если тип значения или ссылочный тип.

Но может ли следующее предложение, которое я нашел в msdn, вызвать проблемы, тогда:

Если два или более анонимных типа в одной сборке имеют одинаковые количество и тип свойств, в том же порядке, в котором компилятор обрабатывает их как одного типа.

Поскольку анонимный объект (со связанным с ним типом) не может покинуть метод, в котором он определен, у нас здесь нет проблем, не так ли?

9
задан codymanix 18 August 2011 в 14:49
поделиться