// x is compiled as an int
var x = 10;
// y is compiled as a string
var y = "Hello";
// z is compiled as int[]
var z = new[] { 0, 1, 2 };
but
// ano is compiled as an anonymous type
var ano = new { x1 = 10, y1 = "Hello" };
ano
创建的对象的属性是只读的。我想弄清楚为什么这些属性是只读的。建议表示赞赏?
EDIT:
var ano1 = new { x1 = 10, y1 = "Hello" };
var ano2 = new { x1 = 10, y1 = "Hello" };
如果新的匿名类型以相同的顺序具有相同数量和类型的属性,那么它是否与第一个具有相同的内部类型?
var
并不意味着“使用匿名类型”,它的意思是“编译器,帮我找出类型!”。在前三种情况下,类型实际上是“命名”类型 -System.Int32
, System.String
, and System.Int32[]
(在最后一种情况下,编译器还根据放入初始值设定项中的数组元素的类型推断出数组元素的类型)。
最后一种情况是唯一使用匿名类型的情况。 C# 的匿名类型是有意设计的不可变的。首先将它们添加到语言中的主要情况是引入 LINQ,在生成匿名类型的情况下它不需要可变性。一般来说,不可变的类往往会给设计者带来更少的问题,特别是在涉及并发时,因此该语言的设计者决定使用不可变的匿名类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)