Анонимные типы — это функция C# 3.0, Visual Basic .NET 9.0 , Oxygene , Scala и Go , которая позволяет типам данных инкапсулировать набор свойств в один объект без необходимости предварительного явного определения типа. [1] Это важная функция SQL -подобной функции LINQ , интегрированной в C# и VB.net. Поскольку анонимные типы не имеют именованного типа, они должны храниться в переменных , объявленных с использованием var
ключевого слова, сообщающего компилятору C# использовать вывод типа для переменной. Созданные свойства доступны только для чтения в C#, однако в VB.net они доступны для чтения и записи.
Эту функцию не следует путать с динамической типизацией . Хотя анонимные типы позволяют программистам определять поля, казалось бы, «на лету», они по-прежнему остаются статическими объектами. Проверка типов выполняется во время компиляции, и попытка доступа к несуществующему полю приведет к ошибке компилятора. Это дает программистам большую часть удобства динамического языка и типобезопасность статически типизированного языка .
вар человек = новый { firstName = «Джон» , LastName = «Смит» }; Консоль . WriteLine ( человек . фамилия );
Выход:Смит
var person struct { firstName string ; строка последнего имени } человек . firstName = "Джон" человек . LastName = "Смит"
let person = object val firstName = "Джон" val LastName = "Смит" end ;;
var person := новый класс ( firstName := 'Джон' , LastName := 'Смит' );
$person = новый класс { public $firstName = "Джон" ; public $lastName = "Смит" ; };
val person = new { val firstName = "Джон" ; val LastName = "Смит" }
Тусклый человек = Новый с {. firstName = "Джон" , . LastName = "Смит" }