C# 匿名类型

c#3.0引入匿名类型,其由编译器动态生成而非显式定义。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project5_33
{
    class Program
    {
        static void Main(string[] args)
        {
            var patent1 = new { Title = "Bifocals", YearOfPublication = "1784" };
            var patent2 = new { Title = "Phonograph", YearOfPublication = "1877" };
            var patent3 = new { patent1.Title, Year = patent1.YearOfPublication };
            Console.WriteLine(patent1);
            Console.WriteLine(patent2);
            Console.WriteLine(patent3);
        }
    }
}

输出:

{ Title = Bifocals, YearOfPublication = 1784 }
{ Title = Phonograph, YearOfPublication = 1877 }
{ Title = Bifocals, Year = 1784 }
请按任意键继续. . .

编译器遇到匿名类型的语法时,会自动生成一个CIL类,该类具有与匿名类型声明中的已经命名的值和数据类型对应的属性。

还可以显式地标识匿名类型的成员名称。在没有明确指定名称的前提下,默认使用字段或属性的名称。

使用:

适用于,使用Lambda表达式和查询表达式关联来自不同类型的数据,或者对数据进行水平投射。

一般情况下避免使用匿名类型,甚至避免使用var来制定饮食类型的变量。除非需要频繁查询集合中的数据而使显式的类型声明成为负担。

你可能感兴趣的:(匿名类)