.net framework 4 显然将包含一个 BigInteger 类。但是,我似乎无法确定它是否是不可变的。我似乎也无法决定这是否是一件好事。
不变性有很多好处,尤其是对于像 big-int 这样“类似价值”的东西。另一方面,基本操作必须高效才能使 PowerMod 等高成本操作尽可能快。就地添加将比不可变添加更快。我目前倾向于将不变性作为库类的更好选择(想想 String)。
有谁知道它是否是不可变的?你认为它应该是不可变的吗?
.net framework 4 显然将包含一个 BigInteger 类。但是,我似乎无法确定它是否是不可变的。我似乎也无法决定这是否是一件好事。
不变性有很多好处,尤其是对于像 big-int 这样“类似价值”的东西。另一方面,基本操作必须高效才能使 PowerMod 等高成本操作尽可能快。就地添加将比不可变添加更快。我目前倾向于将不变性作为库类的更好选择(想想 String)。
有谁知道它是否是不可变的?你认为它应该是不可变的吗?
我相信它将是不可变的(我认为他们基本上是将不可变的 DLR 实现引入核心)。
是的,它应该是不可变的。它的行为应该像其他数值类型,例如 Int32 和 Double。拥有一个可变的数字类会非常混乱。
我认为它将是不可变的,我认为这是“价值”类型唯一合理的设计选择。(与 DLR 一样,F# BigInt 也是不可变的。很高兴我们终于在框架中获得了这种类型以跨语言共享。)
它将是不可变的。是的,它应该是——否则,它不会像其他数字类型那样表现,如果你从基于整数的代码转移到基于大整数的代码,你会看到一些非常奇怪的行为。
可能在将来的某个版本中应该有一个额外的可变类型(比如 StringBuilder 是用于 String 的)
查看 msdn.microsoft.com/en-us/library/system.numerics.biginteger(VS.100).aspx 上的(初步但官方)文档
BigInteger 类型是一种不可变类型,它表示一个任意大的整数,其值在理论上没有上限或下限。[...] 因为 BigInteger 类型是不可变的 [...] 并且因为它没有上限或下限,所以对于导致 BigInteger 值增长过大的任何操作都可能引发 OutOfMemoryException。