我考虑过两种情况:
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
,那么为什么编译器在第一种情况下重用单个类并且不只是为每个匿名类型声明生成一个新类?
最佳答案
所以设计决定的原因是ToString
。匿名类型根据顺序返回不同的 string
。阅读Eric Lippert's blog .
{ a = 5, b = 7 }
{ b = 7, a = 6 }
关于c# - 如果字段的顺序不同,为什么编译器会为匿名类型生成不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859594/