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;
}
}