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

时间:2017-04-18 20:25:46

标签: c# arrays

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

long[] arraylong = new long[array.Length];

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

longmid = lowlong + ((searchValueLong - arraylong[lowlong]) * (highlong - lowlong)) 
    / (arraylong[highlong] - arraylong[lowlong]);

我得到DivideByZeroException类型的例外。 转化后为零的值为arraylong[lowlong]arraylong[highlong]

提前感谢您提供任何帮助。

2 个答案:

答案 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();