Третий объект - анонимный тип . По сути, это тип без имени, который компилятор создает для вас, чтобы вы могли передавать или манипулировать информацией, не требуя от разработчика создания для нее определенного типа.
Эта практика довольно часто встречается в коде, использующем LINQ, где анонимные типы используются для упрощения процесса создания проекций.
Анонимные типы создаются с использованием следующего синтаксиса:
var anonType = new { Age = 25, Color = "Red", ... };
Вы можете назначать анонимные типы только переменным типа var
(или object
). Любые анонимные типы, имеющие одинаковые имена полей одного и того же типа, считаются идентичными компилятором.
Анонимные типы также определяют некоторую разумную семантику равенства и хэширования, поэтому их можно сравнивать и использовать в качестве ключей словаря.
Анонимные типы могут превосходить object [] или Tuple. Во-первых, они строго типизированы - это означает, что вы не можете случайно смешать несовместимые анонимные типы. Во-вторых, они позволяют таким инструментам, как VisualStudio, предоставлять intellisense. В-третьих, они автоматически генерируют для вас семантику сравнения и хеширования, как упоминалось выше. Наконец, в отличие от Tuple <>, вы можете определить анонимный тип с любым количеством полей - что нецелесообразно для Tuple.