我想将我的有序int数组转换为长数组, 这就是我的转换目前的样子:
long[] arraylong = new long[array.Length];
当我想应用此计算时,我的问题出现了:
longmid = lowlong + ((searchValueLong - arraylong[lowlong]) * (highlong - lowlong))
/ (arraylong[highlong] - arraylong[lowlong]);
我得到DivideByZeroException
类型的例外。
转化后为零的值为arraylong[lowlong]
和arraylong[highlong]
提前感谢您提供任何帮助。
答案 0 :(得分:6)
转换int[]
使用linqs Select
并在其中显式转换为long
:
int[] ints = new int[] { 1, 2, 3, 4 };
var longs = ints.Select(item => (long)item).ToArray();
在上面的代码中,您只是将long[]
初始化为int[]
的大小,并且项目获得默认值 - long
为零 - 导致您DivideByZeroException
1}}
请注意,使用ints.Cast<long>().ToArray();
无效并抛出InvalidCastException: Specified cast is not valid
。
答案 1 :(得分:3)
这不是转换,你只是创建一个具有所有默认值的相同长度的数组(即全部为零)。有各种方法来转换你的数组,一个是使用Linq Select
方法:
long[] arrayLong = array.Select(i => (long)i).ToArray();