1

编译器似乎总是命名匿名类型,以便它们包含“AnonymousType”。

new { Name = "Sean"}.GetType().Name // Gives: <>f__AnonymousType0`1

这可以依靠吗?

4

3 回答 3

3

不,你不能依赖它。C# 规范没有指定编译器生成类型的名称。因此编译器的未来版本(或替代实现,如单声道)可能会选择不同的命名方案。

于 2012-05-23T16:28:25.837 回答
2

今天的 C# 编译器确实会将名称 AnonymousType 作为 IL 中生成名称的一部分。

不过,这严格来说是一个实现细节。它不是由语言指定的,也不是保证在该语言的未来版本中是真实的

于 2012-05-23T16:29:07.477 回答
2

C# 4.0 规范中唯一提到匿名类型的类型名称的是 7.6.10.6;

匿名类型的名称由编译器自动生成,不能在程序文本中引用。

换句话说,没有给出或暗示的保证,编译器可以自由生成任何名称。

于 2012-05-23T16:33:59.127 回答