c# - 为什么日期结构是不可变的?

标签 c# objective-c

我想知道为什么日期结构和对象,例如 C# 的 DateTime 和 Obj-C 的 NSDate 是不可变的。

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

更新: 似乎有一个类似的问题对我有一个很好的答案,但专门针对 Java,可以在这里找到:Why do we need immutable class?

结合我的问题的答案非常有用

最佳答案

不可变性让很多事情变得更容易。如果你不必担心你下面的东西会发生变化,那么你就不必编写很多保护代码。您不必做出很多假设。事情有很多可能性不会出错。

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

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

关于c# - 为什么日期结构是不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13830781/

相关文章:

c# - C# 中的 Twitter Oauth

c# - Silverlight xaml 中是否有等效的度量字符串?

ios - 创建自定义调出 View

ios - 通过 watchConnectivity 发送一个 NSObject

ios - 为什么我的 UIView 加载不出来?

objective-c - NSOpenPanel 不会自动关闭

c# - 如何使用 NUnit 测试私有(private)方法?

c# - 为什么它抛出异常,如果它是相同类型的日期时间

c# - LINQ 的 Enumerable.Take 方法在速度方面是否与 SQL 的 TOP 相当?

iphone - 更改静态库的源需要清理并在 xcode 4 中构建