C# 中的不可变类型
Immutable types in C#
我正在尝试了解不可变类型。我知道字符串是不可变的,以及匿名类型,委托,但是这个怎么样?其中哪些在 C# 中是不可变的,为什么?你能解释一下吗?
数据集、标签、日期时间、对象、ArrayList
DateTime
是一个 struct
(= 值类型)并且是不可变的,但其余的 (DataSet, Label, object, ArrayList
) 是可变的:
无法编辑 DateTime
类型的对象 - 其上的所有方法都返回一个新的 DateTime
对象。其他的都可以改。
object
有点特别,因为它可以是 "anything" 所以 AFAIK 它不被称为不可变的。
一般来说"immutable"表示一个对象一旦创建就不能再改变了。正如 Tim 正确指出的那样,struct
s 默认情况下是可变的,但通常以不可变的方式实现。因此说值类型 可以 是可变的,但大多数时候不是。请参阅 THIS 使用可变值类型时会发生什么的小示例。
我正在尝试了解不可变类型。我知道字符串是不可变的,以及匿名类型,委托,但是这个怎么样?其中哪些在 C# 中是不可变的,为什么?你能解释一下吗?
数据集、标签、日期时间、对象、ArrayList
DateTime
是一个 struct
(= 值类型)并且是不可变的,但其余的 (DataSet, Label, object, ArrayList
) 是可变的:
无法编辑 DateTime
类型的对象 - 其上的所有方法都返回一个新的 DateTime
对象。其他的都可以改。
object
有点特别,因为它可以是 "anything" 所以 AFAIK 它不被称为不可变的。
一般来说"immutable"表示一个对象一旦创建就不能再改变了。正如 Tim 正确指出的那样,struct
s 默认情况下是可变的,但通常以不可变的方式实现。因此说值类型 可以 是可变的,但大多数时候不是。请参阅 THIS 使用可变值类型时会发生什么的小示例。