c#匿名类型问题

本文关键字:问题 类型 | 更新日期: 2023-09-27 18:04:02

在下面的代码中,为什么变量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; }
    }
}

c#匿名类型问题

因为你按不同的顺序初始化了它们的属性

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

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