C# 中的不可变类型

Immutable types in C#

我正在尝试了解不可变类型。我知道字符串是不可变的,以及匿名类型,委托,但是这个怎么样?其中哪些在 C# 中是不可变的,为什么?你能解释一下吗?
数据集、标签、日期时间、对象、ArrayList

DateTime 是一个 struct(= 值类型)并且是不可变的,但其余的 (DataSet, Label, object, ArrayList) 是可变的:

无法编辑 DateTime 类型的对象 - 其上的所有方法都返回一个新的 DateTime 对象。其他的都可以改。
object 有点特别,因为它可以是 "anything" 所以 AFAIK 它不被称为不可变的。

一般来说"immutable"表示一个对象一旦创建就不能再改变了。正如 Tim 正确指出的那样,structs 默认情况下是可变的,但通常以不可变的方式实现。因此说值类型 可以 是可变的,但大多数时候不是。请参阅 THIS 使用可变值类型时会发生什么的小示例。