私は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
、なぜコンパイラは最初のケースで単一のクラスを再利用し、匿名型宣言ごとに新しいクラスを生成するだけではないのですか? ?