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