匿名类型提供了一种方便的将一组只读属性包装到一个对象的方法,该方法无需额外定义类型。匿名类型的类型名称是由编译器生成的,在源代码层面无法得知,而匿名类中各个属性的类型则是由编译器推断出来的。
匿名类型的实例使用new关键字创建,示例代码如下:
//创建匿名类型对象
var v = new { Amount = 108, Message = "Hello" };
//使用匿名类型对象
Console.WriteLine(v.Amount + v.Message);
匿名类型的特点:
序号 | 特点 |
---|---|
1 | 本质上匿名类型仍然是 class,直接从 System.Object 继承,匿名类型不能转换为除了 Object 之外的其他类型, |
2 | 如果一个程序集里两个或更多的匿名对象包含的属性的名称,类型,顺序都是一致的,那么编译器就会认为这些对象的类型是相同的。 |
3 | 如果相同匿名类型的两个实例的属性都是想通的,那么他们的Object.Equals判定就是想通的。 |
参考文档:
匿名类型参考