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