比方說,我有一個包含x
成員的陣列,我想創建一個相同長度(x
)和相同的整數值另一個數組:如何將int數組轉換爲可爲null的int數組?
int[] arr = new int[x];
int?[] nullable_arr = arr;
我不能做到這一點:
int?[] arr = new int[x];
是否有顯式轉換爲可空類型的數組或我不知道的東西?
是的,我可以簡單地在循環中轉換每個值,但我問是否已經有一個簡單的方法來做到這一點。
比方說,我有一個包含x
成員的陣列,我想創建一個相同長度(x
)和相同的整數值另一個數組:如何將int數組轉換爲可爲null的int數組?
int[] arr = new int[x];
int?[] nullable_arr = arr;
我不能做到這一點:
int?[] arr = new int[x];
是否有顯式轉換爲可空類型的數組或我不知道的東西?
是的,我可以簡單地在循環中轉換每個值,但我問是否已經有一個簡單的方法來做到這一點。
另一種形式給出了使用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);
當然,OP已經選擇了最短的類型,儘管它比三個發佈(box + unbox)更糟糕。 +1 –
我只是想問你如何做到這一點與Array.Convert所有和是的,我真的忘了拳擊和拆箱謝謝 – SuperMinefudge
btw沒有這樣做:「新的int?(價值)」拳擊呢? – SuperMinefudge
我建議使用的Linq:
int?[] nullable_arr = arr
.Select(item => new int?(item))
.ToArray();
你可以使用Cast
從LINQ的
int?[] arrNull = arr.Cast<int?>().ToArray();
任何其他「合成糖」方法將循環通過所有項目。你可以使用LINQ ro,你可以使用'Array.ConvertAll' – Fabio
@Fabio我認爲OP的確要求一個語法糖。爲什麼不發佈基於ConvertAll方法的答案,這將是數組的最佳解決方案(不像目前的答案更一般,但效率更低)。 –