Анонимный тип

Анонимный тип

Анонимный тип (англ. Anonymous types) — одно из нововведений в языках C# 3.0, Visual Basic .NET 9.0 и Oxygene, позволяющее типам данных инкапсулировать набор свойств в едином объекте без необходимости предварительного явного указания типа[1]. Это одна из важнейших особенностей SQL-подобного языка LINQ, интегрированного в языки C# и VB.net. Поскольку анонимные типы не поддерживают типизацию имён, то они должны храниться в переменных, объявленных при помощи ключевого слова var, сообщающего компилятору языка C# использовать вывод типов для данной переменной. Такие свойства в языке C# доступны только для чтения, однако в языке VB.net они доступны и для изменения (чтение-запись).

Содержание

Сравнение с динамической типизацией

Данную возможность не следует путать с динамической типизацией. Несмотря на то, что анонимные типы позволяют программисту определять поля «на лету», они все равно остаются статическими сущностями. Проверка типа выполняется во время компиляции, и попытка получить доступ к несуществующему полю вызовет ошибку компиляции. Это позволяет программисту воспользоваться удобством динамического языка наряду с безопасностью типов языка со статической типизацией.

Примеры

На языке C#

var person = new {FirstName = "Иван", LastName = "Иванов"}

На языке Visual Basic .NET

Dim person = New With {.FirstName = "Иван", .LastName = "Иванов"}

На языке Oxygene

var person := new class(FirstName := 'Пётр', LastName := 'Петров');

На языке OCaml

let person = object val firstName = "Пётр" val lastName = "Петров" end;;

Критика

Одним из главных недостатков анонимного типа в C# 3.0 является невозможность экспортировать его за пределы метода, в котором его создали. Данное ограничение связано с унаследованными ограничениями CLR .NET Framework 2.0, в котором не были предусмотрены анонимные типы. Как следствие, невозможно разрешить конфликт имен при экспорте анонимного типа с совпадающей сигнатурой, и соответственно, анонимный тип нельзя сделать видимым за пределами сборки. Ограничение на методы накладывается потому, что они могут быть экспортированы в другие сборки, что и вызвало бы описанную проблему[2].

См. также

Примечания

  1. Anonymous Types (C# Programming Guide). Microsoft. Архивировано из первоисточника 23 июля 2012. Проверено 25 ноября 2008.
  2. C# 3.0 и LINQ. Концепции C# 3.0, позволившие создать LINQ  (рус.)

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Анонимный тип" в других словарях:

  • Language Integrated Query — LINQ в составе .NET Framework Language Integrated Query (LINQ)  проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework …   Википедия

  • ИОАНН ЗЛАТОУСТ. Часть II — Учение Считая правильную веру необходимым условием спасения, И. З. в то же время призывал веровать в простоте сердца, не обнаруживая излишнего любопытства и помня, что «природа рассудочных доводов подобна некоему лабиринту и сетям, нигде не имеет …   Православная энциклопедия

  • ИОАНН БОГОСЛОВ — [Иоанн Зеведеев; греч. ᾿Ιωάννης ὁ Θεολόγος], один из ближайших учеников Иисуса Христа, св. апостол от Двенадцати (см. Апостолы), с именем к рого церковное Предание связывает создание ряда канонических текстов НЗ, в т. ч. Евангелия от Иоанна,… …   Православная энциклопедия

  • ДИМИТРИЙ СОЛУНСКИЙ — († ок. 306), вмч. (пам. 26 окт.), один из наиболее чтимых святых в правосл. мире, покровитель г. Фессалоника (слав. Солунь). Греки именуют Д. С. Мироточцем (ὁ μυροβλύτης / μυροβλήτης), т. к. его мощи источали миро, а в визант. текстах… …   Православная энциклопедия

  • БИБЛИЯ. IV. ПЕРЕВОДЫ — Переводы Б. На древние языки Арамейские таргумы Арамейский таргум иудейский перевод Б. (ВЗ) на арамейский язык. Существительное « » в постбиблейском евр. и арам. означает «перевод», глагол « » (арам. ) «переводить, объяснять» (единственный раз в… …   Православная энциклопедия

  • FTP — У этого термина существуют и другие значения, см. FTP (значения). FTP Название: File Transfer Protocol Уровень (по модели OSI): Прикладной Семейство: TCP/IP Создан в: 1971 г. Порт/ID: 21/TCP для команд, 20/TCP для данных, 49152 65534/TCP… …   Википедия

  • АПОСТОЛЬСКИЕ СПИСКИ — [лат. indices apostolorum, нем. Apostelkatalogen, франц. listes d apôtres), термин для обозначения отдельных текстов или частей др. произведений, в к рых перечисляются имена апостолов с возможным добавлением сведений о них (происхождение, место… …   Православная энциклопедия

  • Страсти (Бах) — Иоганн Себастьян Бах «Страсти» (нем. Die Passion)  цикл монументальных произведений Баха, где разыгрываемый в лицах евангельский рассказ перемежается ариями da capo …   Википедия

  • ВИЗАНТИЙСКАЯ ИМПЕРИЯ. ЧАСТЬ IV — Изобразительное искусство является важнейшей по значению в христ. культуре и наиболее обширной по количеству сохранившихся памятников частью художественного наследия В. и. Хронология развития визант. искусства не вполне совпадает с хронологией… …   Православная энциклопедия

  • рыцарский роман —          один из центральных жанров средневековой повествовательной литературы, получивший общеевропейское распространение. Сложился в сер. XII в., первые памятники возникли в окружении Генриха II Плантаге нета и Алиеноры Аквитанской, а также их… …   Словарь средневековой культуры


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»