2011-07-28 15 views
4

次のコードで、変数c2とc3が異なる匿名型の理由は何ですか?c#匿名型の質問

アドバイスをいただきありがとうございます...歓声!

namespace ConsoleApplication5 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var c1 = new Customer { Name = "Mark", Country = "USA" }; 

      var c2 = new { c1.Name, c1.Country }; //"<>f__AnonymousType0`2" 
      var c3 = new { c1.Country, c1.Name }; //"<>f__AnonymousType1`2" 
     } 
    } 

    public class Customer 
    { 
     public string Name { get; set; } 
     public string Country { get; set; } 
    } 
} 

答えて

10

あなたは異なる順序でそのプロパティを初期化しているため。

これらは同じ順序で初期化する場合にのみ、同じ匿名型にコンパイルされます。 anonymous types上のMSDNドキュメントから:同じアセンブリ内の2つの以上の匿名型は、同じプロパティの数と種類を持っている場合は

は、同じ順序で、コンパイラは、同じ型として扱います。