只有在用于定义复合类型时(即没有“传统的”类定义的那些类),匿名类型才能真正发挥它的作用。匿名类型的这种用法可以用来定义联类(无需任何类型化定义)。下面示例中所给出的匿名类型定义了一个轻量级的人物类。
示例 含有连个字段和两个属性的匿名类型,程序员无需编写完整的类型定义代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ImmutableAnonymousTypes
{
class Program
{
static void Main(string[] args)
{
var dena=new {First="Dena",Last="Swanson"};
//dena.First="Christine";//error - immutable
Console.WriteLine(dena);
Console.ReadLine();
}
}
}
var dena开头的那行代码所定义的匿名类型将在MSIL中发出一个类(也称为一个投影)。虽然该投影的名称(即类名)不能在代码中引用,不过成员元素(由成员声明器First和Last定义)在代码中则是可以使用的,而且智能感知技术对该投影的所有元素都是有效的。