如何将int数组转换为可空的int数组?

时间:2017-01-01 21:10:46

标签: c# arrays nullable non-nullable

假设我有一个包含x成员的数组,我想创建另一个具有相同Length(x)和相同整数值的数组:

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

我不能这样做:

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

是否存在显式转换为可空类型数组或我不知道的内容?

是的,我可以简单地在循环中转换每个值,但我问的是否已经有一个简单的方法。

3 个答案:

答案 0 :(得分:5)

我建议使用 Linq

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

答案 1 :(得分:5)

使用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);

答案 2 :(得分:4)

您可以使用Linq的Cast

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