我考虑了2个案例:
var a = new { a = 5 };
var b = new { a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // True
ideone:http: //ideone.com/F8QwHY
和:
var a = new { a = 5, b = 7 };
var b = new { b = 7, a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // False
ideone:http: //ideone.com/hDTcxX
问题是为什么字段的顺序实际上很重要?
这是否有任何原因,或者仅仅是因为它是(这就是设计)。
如果原因只是不应该以这种方式使用匿名类型并且您不应该诉诸于GetType
,那么为什么编译器会在第一种情况下重用单个类,而不仅仅是为每个匿名类型声明生成一个新类?