c#如何初始化用null代替零的泛型int数组
本文关键字:泛型 int 数组 初始化 null | 更新日期: 2023-09-27 18:08:40
如果我声明如下:
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;
是否有一种方法可以让它像这样初始化?
foo[0]=null;
foo[1]=null;
foo[2]=null;
我问,因为'0'有特殊的含义,我想用'null'代替,以表明数组元素尚未设置。请注意,我使用的是泛型,有时我不会使用整型——例如,有时我可能会使用引用类型。
int
为值类型,不能设置为null
。如果您希望允许为空,则必须使用Nullable<int>
作为类型参数,或者更简洁地使用int?
。
int?[] foo = GetFoo<int?>(3);
NULL
不能为int
类型,但可以为int?
类型。执行int?[]
,它将具有空值。当它用default(T)
填充数组时,在T的情况下,int?
将是NULL
。