Поскольку анонимный тип в любом случае доступен только для чтения, было бы более эффективно, если бы они реализовали их как структуры так что запросы 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, вызвать проблемы, тогда:
Если два или более анонимных типа в одной сборке имеют одинаковые количество и тип свойств, в том же порядке, в котором компилятор обрабатывает их как одного типа.
Поскольку анонимный объект (со связанным с ним типом) не может покинуть метод, в котором он определен, у нас здесь нет проблем, не так ли?