编译.NET程序集时,名称中包含x__的类是什么?

时间:2010-08-18 14:19:26

标签: c# .net

例如:

  • StudentRegistrationService<>c__DisplayClass1
  • <>f__AnonymousType56`2
  • DocShareClassification<GetErrors>d__2

我非常确定StudentRegistrationService<>c__DisplayClass1是一个闭包,并且在指定了匿名类型时生成了<>f__AnonymousType56`2,但我以前从未见过d__类。还有不止这些吗?

3 个答案:

答案 0 :(得分:6)

这些是由C#编译器生成的类,以便至少支持以下功能

  • 闭包/匿名方法表达式
  • 匿名类型
  • 迭代

d__2可能是一个帮助类的迭代器。

答案 1 :(得分:1)

这是在编译时生成的使用匿名类型

创建的类

答案 2 :(得分:0)

IIRC它是为迭代器块生成的类。但是,您应该对这些名称做出任何假设或依赖它们 - 它是实现细节,可能随时更改