匿名类型就是无需事先申明,可直接创建任意实例的一种类型。使用 new {}
语法创建,创建时申明字段并赋值。
- 由编译器进行推断创建出一个完整类型。
- 匿名类型属性都是只读的,同时实现了相等比较、
ToString()
方法。
var u = new { Name = "same", Age = 10, Birthday = DateTime.Now }; Console.WriteLine(u.Name); //u.Age=120; //只读不可修改
因此,匿名类型也是一种语法糖,由编译器来生成完整的类型。大多数场景都可以由 ValueTuple 代替,性能更好,也不需要额外的类型了。