Я рассмотрел 2 случая:
var a = new { a = 5 };
var b = new { a = 6 };
Console.WriteLine(a.GetType() == b.GetType()); // True
Идеал: 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
Идеал: http://ideone.com/hDTcxX
Вопрос в том, почему порядок полей действительно имеет значение?
Есть ли причина для этого или просто потому, что это (таков дизайн).
Если причина в том, что типы анонимов не должны использоваться таким образом, и вы не должны обращаться к GetType
, то почему компилятор повторно использует один класс в первом случае, а не просто генерирует новый класс для каждого объявления типа анонимуса?