编辑:下面的列表适用于C#匿名类型。VB.NET具有不同的规则-
特别是,它可以生成可变的匿名类型(默认情况下会生成)。贾里德(Jared)在评论中指出,命名方式也有所不同。基本上,这一切都很脆弱…
您无法在一般约束中识别它,但是:
- 它将是一个类(而不是接口,枚举,结构等)
- 它将应用CompilerGeneratedAttribute
- 它将覆盖Equals,GetHashCode和ToString
- 它将在全局名称空间中
- 它不会嵌套在其他类型中
- 这将是内部的
- 将被密封
- 它将直接从
object
- 它将具有与属性一样多的类型参数。(您 可以 有一个没有属性的非泛型匿名类型。尽管如此,这毫无意义。)
- 每个属性将具有一个类型参数,其名称包括属性名称,并且将具有该类型参数,例如Name属性将成为类型<> _ Name的属性
- 每个属性都是公开且只读的
- 对于每个属性,将有一个对应的只读专用字段
- 将没有其他属性或字段
- 将有一个构造函数采用一个与每个类型参数相对应的参数,其顺序与类型参数相同
- 每个方法和属性都将应用DebuggerHiddenAttribute。
- 类型的名称将以“ <>”开头,并包含“ AnonymousType”
但是,规范对此几乎没有保证-因此在下一版本的编译器中,或者如果您使用Mono等,都可能会更改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)