C# 匿名类型

3

当我说匿名类型声明时

var someType = new { Name = "Jon Skeet", Age = 10 };

然而关键字

var is  implicitly typed

但是当我打印时
Response.Write(someType.GetType().Name);

这段代码产生了<>f__AnonymousType02.。这个符号<>代表什么?


6
虽然该类型逻辑上没有名称,但元数据格式不允许无名称的类型,因此我们只能选择一个“不可能”的名称。您会注意到我们对匿名函数也采用相同的做法。如果您足够聪明,可以获取匿名函数的方法信息并询问其名称;您将获得类似的“不可能”的名称。我们还为闭包、迭代器块的特殊字段等生成不可能的名称。 - Eric Lippert
我希望你在微软的编译器开发团队,对吗? - Russel
2个回答

11
编译器为您的匿名类型生成一个常规类,并选择一个在IL中有效但不在C#中有效的名称,以防止与您的类型名称发生命名冲突。

1

这是类型名称的一部分。它本身没有特定的含义,但使用了一系列字符,不太可能与任何人类编写的代码冲突。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接