gpt4 book ai didi

c# - C# 中的匿名类型

转载 作者:可可西里 更新时间:2023-11-01 08:41:23 24 4
gpt4 key购买 nike

// 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 };

但是

// ano is compiled as an anonymous type 
var ano = new { x1 = 10, y1 = "Hello" };

ano 创建的对象属性是只读的。我想弄清楚为什么这些属性是只读的。赞赏建议?

编辑:

var ano1 = new { x1 = 10, y1 = "Hello" };

var ano2 = new { x1 = 10, y1 = "Hello" };

是否如果新的匿名类型具有相同数量和类型的相同顺序的属性,它是否与第一个具有相同的内部类型?

最佳答案

var 的意思不是“使用匿名类型”,而是“编译器,帮我找出类型!”。在前三种情况下,类型实际上是“命名”类型 - System.Int32System.StringSystem.Int32[](在最后一种情况下,数组元素的类型也由编译器从您放入初始化程序中的数组元素的类型中推断出来)。

最后一种情况是唯一使用匿名类型的情况。 C# 的匿名类型在设计上是不可变的。首先在语言中添加它们的主要情况是引入了 LINQ,在生成匿名类型的情况下不需要可变性。一般来说,不可变类往往给设计者带来的问题较少,尤其是在涉及并发时,因此该语言的设计者决定使用不可变匿名类型。

关于c# - C# 中的匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18816218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com