C# 匿名类型问题

4
在下面的代码中,为什么变量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个回答

10

因为你以不同的顺序初始化它们的属性。

只有在相同顺序下初始化它们,它们才会编译成相同的匿名类型。来自匿名类型的MSDN文档:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接