2017-01-01 237 views
0

比方說,我有一個包含x成員的陣列,我想創建一個相同長度(x)和相同的整數值另一個數組:如何將int數組轉換爲可爲null的int數組?

int[] arr = new int[x]; 
int?[] nullable_arr = arr; 

我不能做到這一點:

int?[] arr = new int[x]; 

是否有顯式轉換爲可空類型的數組或我不知道的東西?

是的,我可以簡單地在循環中轉換每個值,但我問是否已經有一個簡單的方法來做到這一點。

+3

任何其他「合成糖」方法將循環通過所有項目。你可以使用LINQ ro,你可以使用'Array.ConvertAll' – Fabio

+0

@Fabio我認爲OP的確要求一個語法糖。爲什麼不發佈基於ConvertAll方法的答案,這將是數組的最佳解決方案(不像目前的答案更一般,但效率更低)。 –

回答

4

另一種形式給出了使用Array.ConvertAll方法

var values = new[] {1, 2, 3, 4}; 
var nullableValues = Array.ConvertAll(ints, value => new int?(value)); 

或者有明確規定泛型類型

var nullableValues = Array.ConvertAll<int, int?>(ints, value => value); 
+0

當然,OP已經選擇了最短的類型,儘管它比三個發佈(box + unbox)更糟糕。 +1 –

+0

我只是想問你如何做到這一點與Array.Convert所有和是的,我真的忘了拳擊和拆箱謝謝 – SuperMinefudge

+0

btw沒有這樣做:「新的int?(價值)」拳擊呢? – SuperMinefudge

5

我建議使用的Linq

int?[] nullable_arr = arr 
    .Select(item => new int?(item)) 
    .ToArray(); 
4

你可以使用Cast從LINQ的

int?[] arrNull = arr.Cast<int?>().ToArray();