2009-12-14 3 views
3

Когда я говорю Anonymous Тип декларацииC# Anonymous Тип

вар SomeType = новый {Name = "Джон Скит", Age = 10};

Однако ключевое слово

var is implicitly typed 

но когда я печатать

Response.Write(someType.GetType().Name); 

производит Что этот символ <> относится к?

+6

Хотя тип * логически * не имеет имени, формат метаданных не допускает безымянных типов, поэтому мы просто выбираем «невозможное» имя. Вы заметите, что мы делаем то же самое для анонимных * функций *. Если вы умны, вы можете получить информацию о методе для анонимной функции и спросить ее имя; вы получите подобное «невозможное» имя. Мы также генерируем невозможные имена для замыканий, специальных полей блоков итераторов и т. Д. –

+0

Надеюсь, вы находитесь в команде разработчиков компилятора @ Microsoft.Right? – Russel

+1

Попробуйте нажать на его имя. –

ответ

11

Компилятор создает обычный класс для вашего анонимного типа и выбирает имя, которое является действительным в IL, но не на C#, чтобы предотвратить конфликты имен имен типов.

1

Это часть названия типа. Это не означает ничего конкретного, но использует последовательность символов, которые вряд ли будут противоречить любому человеко-письменному коду.

Смежные вопросы