В C# реализована возможность работы с типами, которые работают, как классы только без описания в коде класса. Простыми словами - это создание объекта класса без явного определения класса. Это значит, что можно создавать объект с полями без написания класса. Подробнее о том для чего нужны анонимные типы, как они работают и когда использовать в этой статье. Для чего нужны и когда использовать? Иногда возникает ситуация, когда необходимо работать с каким-нибудь классом в одном месте. Для того, чтобы не реализовывать/описывать его существуют анонимные типы. Реализация его происходит на месте, т.е. где это необходимо. Наиболее частый пример - формирование тела запроса в специфическом виде (который имеет видоизмененные названия переменных и т.д.) и конвертации в JSON/XML. Как работают? В CLR подобно инициализации класса, инициализируются анонимные типы. Они, как и классы являются ссылочным типом. CLR дает такому типу специфическое имя и если после попадаются такие же анонимные типы, то они