我试图理解不可变类型。我知道字符串是不可变的,以及anonymouse类型,delagates,但这个怎么样?其中哪些在C#中是不可变的,为什么?你能解释一下吗? DataSet,Label,DateTime,object,ArrayList
答案 0 :(得分:2)
DateTime
是struct
(=值类型)且不可变,但其余的(DataSet, Label, object, ArrayList
)是可变的:
无法编辑DateTime
类型的对象 - 其上的所有方法都返回一个新的DateTime
对象。所有其他人都可以改变
object
有点特别,因为它可以是"任何"所以AFAIK它不被称为不可变的。
一般而言,"不可变的"意味着对象在创建后无法更改。正如Tim struct
所正确指出的那样,默认情况下是可变的,但通常以不可变的方式实现。因此,所述值类型可以是可变的,但大多数情况下它不是。请参阅THIS小例子,当您使用可变值类型时会发生什么。