C# 如何用空值而不是零初始化通用 int 数组?

C# how to initialize generic int array with nulls instead of zeros?

如果我声明如下:

    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不能是int类型。但可以是int?类型。做 int?[] 它将有空值。因为它用 default(T) 填充数组,在 T int? 的情况下将是 NULL.

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

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