我想将有序的int数组转换为长数组,
这是我目前的转换结果:
long[] arraylong = new long[array.Length];
当我想应用此计算时,会出现我的问题:
longmid = lowlong + ((searchValueLong - arraylong[lowlong]) * (highlong - lowlong))
/ (arraylong[highlong] - arraylong[lowlong]);
我得到了
DivideByZeroException
类型的异常。转换后为零的值是
arraylong[lowlong]
和arraylong[highlong]
预先感谢您可能提供的任何帮助。
最佳答案
要转换int[]
,请使用linqs Select
并将其显式转换为long
:
int[] ints = new int[] { 1, 2, 3, 4 };
var longs = ints.Select(item => (long)item).ToArray();
在上面的代码中,您仅将
long[]
初始化为int[]
的大小,并且这些项目将获得默认值-对于long
而言该值为零-导致您的DivideByZeroException
请注意,使用
ints.Cast<long>().ToArray();
将不起作用并抛出InvalidCastException: Specified cast is not valid
。