2017-04-18 85 views
1

我想我的有序int數組轉換成多頭排列, 這是我的我的轉換目前的樣子:如何將int數組轉換爲C#中的長數組?

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

我的問題出現時,我想將此計算:

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

,我得到一個類型爲DivideByZeroException的例外。 ,轉換後的零值是arraylong[lowlong]arraylong[highlong]

預先感謝您爲您可以給任何幫助。

+5

這不是一個轉換,你只是創建一個全長爲零的數組。 – DavidG

回答

5

要轉換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。 (即所有零)

3

這不是一個轉換,你只是創建相同長度的所有默認值的數組有多種方法可以將數組轉換,一種是使用LINQ的Select方法:

long[] arrayLong = array.Select(i => (long)i).ToArray();