我想将有序的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

09-19 06:52