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'代替,以表明数组元素尚未设置。请注意,我使用的是泛型,有时我不会使用整型——例如,有时我可能会使用引用类型。

c#如何初始化用null代替零的泛型int数组

int为值类型,不能设置为null。如果您希望允许为空,则必须使用Nullable<int>作为类型参数,或者更简洁地使用int?

int?[] foo = GetFoo<int?>(3);

NULL不能为int类型,但可以为int?类型。执行int?[],它将具有空值。当它用default(T)填充数组时,在T的情况下,int?将是NULL