如果我宣布以下内容:
if (array[i] >= firstVal && array[i] <= lastVal) {
newArray.push(array[i]); // Add to new array
}
else {
newArray.push(null);
}
在客户端代码中我将上述内容称为:
public T[] GetFoo<T>(int length)
{
return new T[length];
}
然后int[] foo = GetFoo<int>(3);
将被初始化为:
foo[]
有没有办法可以让它像这样初始化?
foo[0]=0;
foo[1]=0;
foo[2]=0;
我问因为&#39; 0&#39;有特殊意义,我想使用&#39; null&#39;而是表示尚未设置数组元素。请注意,我使用的是泛型,有时我不会使用int - 例如,有时候我可能会使用引用类型。
答案 0 :(得分:6)
int
是一种无法设置为null
的值类型。如果您想允许空值,则必须使用Nullable<int>
作为类型参数,或者更加简洁int?
。
int?[] foo = GetFoo<int?>(3);
答案 1 :(得分:2)
NULL
不能是int
类型。但它可以是int?
类型。执行int?[]
并且它将具有空值。因为它使用default(T)
填充数组,如果T int?
将为NULL
。