当前位置:编程学习 > C#/ASP.NET >>

[分享]C#3.0:Anonymous Type In CLR(3.5)

我们说Anonymous Type是C# 3.0的新的特性,而没有说Anonymous Type是.NET Framework 3.5的新特性。这是因为Anonymous Type仅仅是.NET Programming Language和相应的Compiler的新引入的特征。而对于.NET Framework 3.5来说,它看不到这和原来有什么不同,对于Anonymous Type和一般的Named Type,对于CLR来说他们之间没有什么本质的区别。
通过下面这样的一段简单的代码:
1var p1 = new { Name = "IORI", Age = 27 };
然后我们再看看IL:
Code
1.method private hidebysig static void  Main(string[] args) cil managed
2{
3  .entrypoint
4  // Code size      15 (0xf)
5  .maxstack
3
6  .locals init ([0] class '<>f__AnonymousType0`2'<string,int32> p1)
7  IL_0000: nop
8  IL_0001: ldstr "IORI"
9  IL_0006: ldc.i4.s 27
10  IL_0008: newobj instance void class '<>f__AnonymousType0`2'<string,int32>::.ctor(!0,!1)
11                                                                                     
12  IL_000d: stloc.0
13  IL_000e: ret
14} // end of method Program::Main
15
我们再这里就可以看出Compiler将会为p1这个Anonymous Type创建一个名为<>f__AnonymousType0`2<string,int32>的类型。参数将根据数据成员的具体结构,这里也是声明一个类型。这个类继承自object,并且重写了ToString() 和 GetHashCode()的实现。所有的匿名类型自动继承自System.Object ,并且重写了Equals(), GetHashCode(), and ToString().

详细请看这里:http://www.netcsharp.cn/showtopic-652.aspx --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,