C# 无法隐式转换类型';System.Numerics.BigInteger';至';int';。存在显式转换(是否缺少强制转换?)

C# 无法隐式转换类型';System.Numerics.BigInteger';至';int';。存在显式转换(是否缺少强制转换?),c#,.net,C#,.net,我有一个数组和简单循环: static BigInteger[] dataSet = new BigInteger[] { 100913, 1009139, 10091401, 100914061, 1009140611, 10091406133, 100914061337, 1009140613399 }; foreach (BigInteger num in dataSet ) { BigInteger[] Vector = new BigIntege

我有一个数组和简单循环:

static BigInteger[] dataSet = new BigInteger[] { 100913, 1009139, 10091401, 100914061, 1009140611, 10091406133, 100914061337, 1009140613399 };


 foreach (BigInteger num in dataSet ) {

                BigInteger[] Vector = new BigInteger[num];

                for (BigInteger i = 1; i <= num; i++)  {
                    Vector[i - 1] = i;
                }
            }
一切都转换成了BigInteger,我看不出可能的原因

会感谢你的帮助


提前感谢,

num
是一个
biginger
,但您正在使用它初始化数组的大小:

BigInteger[] Vector = new BigInteger[num];

数组的索引器是
int
,这意味着您可以创建的最大大小是
int.MaxValue
(2147483647)。

我建议您放弃使用
biginger
的方法,因为分配值高于
int.MaxValue
的数组会耗尽内存。数组和列表仅限于
int.MaxValue
用途。Integer可以满足您在99.9%的情况下使用阵列的需要

我想知道你们想归档什么,为什么你们需要这么大的数组,用递增的计数器归档

为了使代码能够编译,您需要强制转换大整数:

         foreach (BigInteger num in dataSet ) {

            BigInteger[] Vector = new BigInteger[(int)num];

            for (BigInteger i = 1; i <= num; i++)  {
                Vector[(int)(i - 1)] = i;
            }
        }
foreach(数据集中的biginger num){

BigInteger[]向量=新的BigInteger[(int)num];
for(biginger i=1;i Integer.

哪一行是错误?biginger[]Vector=new biginger[num];
num
是一个
biginger
但您正在使用它初始化数组的大小。这是正确的,因为我想创建与numYes相同大小的数组,据我所知,biginger使用(至少)16字节意味着您要在此处创建的最大阵列的内存约为16gb!
         foreach (BigInteger num in dataSet ) {

            BigInteger[] Vector = new BigInteger[(int)num];

            for (BigInteger i = 1; i <= num; i++)  {
                Vector[(int)(i - 1)] = i;
            }
        }