C# BigInteger源代码

C# BigInteger源代码,c#,biginteger,C#,Biginteger,我想做一个快速的斐波那契算法。它通常需要将一个BigInteger分配给另一个变量,因为C#BigInteger是作为结构实现的,所以它需要复制整个数组,可以是数千个整数。所以我需要一个可以通过引用访问的BigInteger实现。.Net Reflector和ILSpy都只显示空的实现 在任何情况下,看到源代码都会很有趣,如这里所问: 问题在于,每个所谓的源代码文件实际上都没有一个实现、dll和下载地址: 创建包装器类不会有帮助,因为该算法需要大量计算,即使是简单的加法也需要整个数组的三个副

我想做一个快速的斐波那契算法。它通常需要将一个BigInteger分配给另一个变量,因为C#BigInteger是作为结构实现的,所以它需要复制整个数组,可以是数千个整数。所以我需要一个可以通过引用访问的BigInteger实现。.Net Reflector和ILSpy都只显示空的实现

在任何情况下,看到源代码都会很有趣,如这里所问:

问题在于,每个所谓的源代码文件实际上都没有一个实现、dll和下载地址:

创建包装器类不会有帮助,因为该算法需要大量计算,即使是简单的加法也需要整个数组的三个副本


有人知道为什么BigInteger被实现为一个结构吗?在哪里可以找到源代码?

如果您需要更快的实现;我建议您考虑另一种实现方式;比如包装纸


您还可以看看的这个实现。

BigInteger和整个.net核心的完整源代码现在终于在和上可用。

BigInteger
被实现为一个结构,因此它具有值语义而不是引用语义。BigInteger有两个实例字段,
int\u符号
uint[]\u位
。这意味着结构的副本引用了同一个数组,因此您描述的问题不存在。a谢谢,我想不起来。另外,我在某处有一个Fibonacci矩阵形式的实现,您对此感兴趣吗?数组是通过引用复制的;复制大的BigInteger非常快。如果你在提出问题之前已经衡量了绩效,你就会知道这一点。当你有绩效问题时,首先测量。现在,加法确实会复制,因为结果是不同的数字。当你把二加六,你不会神奇地把六变成八。你会得到三个数字:2,6和8。