多個匿名類型
如果你創建了多個相似的匿名類型,C#編譯器會聰明的發現這一點,只 生成一個類和它的兩個實例,比如你輸入如下代碼:
using System;
using System.Query;
using System.Data.DLinq;
namespace AnonTypes
{
class Program
{
static void Main(string[] args)
{
var p1 = new {Name = "A", Price = 3};
var p2 = new {Name = "A", Price = 3};
Console.WriteLine("Name = {0}\nPrice = {1}",p1.Name, p1.Price);
Console.ReadLine();
}
}
}
當你編譯完 並用ILDASM打開的時候,結構如下所示:
圖 2
你可以看到,因為聲明是類似的,所以C#只創建了一個匿名類,因而優 化了程序。但是如果它們不是很類似的話,就會有兩個匿名類。
稍微修 改以上代碼,如下:
new {Name = "A", Price = 3};
var p2 = new {Name = "A"};
圖3
你可以看到,C#創建了兩個類,<Projection>f__0 and <Projection>f__1。
總結
這裡我們可以看到,匿名類型為 程序員提供了一種機制,該機制使得你無須清晰的聲明類結構。而且,C# 3.0編 譯器非常的智能化,在你擁有多個相似的匿名類型時只創建一個匿名類型從而達 到了優化程序的目的。