c#匿名类型问题

时间:2011-07-28 09:14:01

标签: c# language-features anonymous-types

在下面的代码中,为什么变量c2和c3是不同的匿名类型?

提前感谢任何建议和...欢呼!

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; }
    }
}

1 个答案:

答案 0 :(得分:10)

因为您以不同的顺序初始化了他们的属性。

如果以相同的顺序初始化它们,它们将仅被编译为相同的匿名类型。来自anonymous types上的MSDN文档:

  

如果同一程序集中的两个或多个匿名类型具有相同的数量和类型的属性,则编译器将按相同的顺序将它们视为相同的类型。