如何在C#中将int数组转换为长数组?

L. *_*ull 3 c# arrays

我想将我的有序int数组转换为长数组,这是我的转换目前的样子:

long[] arraylong = new long[array.Length];
Run Code Online (Sandbox Code Playgroud)

当我想应用这个计算时,我的问题出现了:

longmid = lowlong + ((searchValueLong - arraylong[lowlong]) * (highlong - lowlong)) 
    / (arraylong[highlong] - arraylong[lowlong]);
Run Code Online (Sandbox Code Playgroud)

我得到一个类型的例外DivideByZeroException.转换后为零的值为arraylong[lowlong]arraylong[highlong]

提前感谢您提供的任何帮助.

Gil*_*een 7

要转换int[]使用linqs Select并在其中显式转换为long:

int[] ints = new int[] { 1, 2, 3, 4 };
var longs = ints.Select(item => (long)item).ToArray();
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,您只是将a初始化long[]为大小,int[]并且项目获得默认值 - long为零为零 - 导致您的DivideByZeroException


请注意,使用ints.Cast<long>().ToArray();将无法正常工作并抛出InvalidCastException: Specified cast is not valid.