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来制定饮食类型的变量。除非需要频繁查询集合中的数据而使显式的类型声明成为负担。