c#匿名型问题

c#匿名型问题,c#,language-features,anonymous-types,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.N

在下面的代码中,为什么变量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; }
    }
}
命名空间控制台应用程序5
{
班级计划
{
静态void Main(字符串[]参数)
{
var c1=新客户{Name=“Mark”,Country=“USA”};
var c2=新的{c1.Name,c1.Country};/“f_uu匿名类型0`2”
var c3=新的{c1.Country,c1.Name};/“f_uu匿名类型1`2”
}
}
公共类客户
{
公共字符串名称{get;set;}
公共字符串国家{get;set;}
}
}

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

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

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