为什么Date结构是不可变的?

CSt*_*eel 3 c# objective-c

我想知道为什么Date结构和对象,比如C#的DateTime和Obj-C的NSDate已经变成了不可变的.

我正在寻找这种设计背后的原因以及使这些信息不可改变的好处,而不仅仅是"因为它们可以"

更新: 似乎有一个类似的问题,我的答案很棒,但专门针对Java,它可以在这里找到:为什么我们需要不可变的类?

这与我的问题的答案相结合,提供了非常丰富的信息

Eri*_*sch 7

不变性使很多事情变得更容易.如果您不必担心某些事情可能会在您下面发生变化,那么您就不必编写许多保护代码.你不必做很多假设.事情有很多可能性,不会出错.

字符串,日期和其他类型的公共对象在现代语言中不可变是很常见的,因为它简化了编译器,框架,并且意味着编译器在进行优化时可以自由地做出假设.

要点是,只需很小的代价(如果你想改变价值就必须创建一个新的对象),你会获得很多真正的性能,稳定性和可靠性.