AnonymousType
二、CLR 眼中的Anonymous Type
var v = new{ID = Guid.NewGuid(), Name= "Zhang San" };
通过编译,Compiler将会创建一个名为
<>f__AnonymousType0<<>j__AnonymousTypeTypeParameter1, <>j__AnonymousTypeTypeParameter2>的Class。
该Class的结构如下:
public sealed class <>f__AnonymousType0<<>j__AnonymousTypeTypeParameter1, <>j__AnonymousTypeTypeParameter2>
2: {
3: public <>j__AnonymousTypeTypeParameter1ID{ get; set; }
4: public j__AnonymousTypeTypeParameter2 Name{ get; set; }
5: private j__AnonymousTypeTypeParameter1 <>i__AnonymousTypeField3;
6: private j__AnonymousTypeTypeParameter2 <>i__AnonymousTypeField4;
7: }
<>j__AnonymousTypeTypeParameter1和<>j__AnonymousTypeTypeParameter2这两个Generic Type代表我在 {} 中制定ID和Name的类型。
通过这个结构,我们发现其定义和一般的Generic Type并没有什么区别。