我正在编写具有通用类型TVal
的函数。我写了这行:
var zeroBased = new TVal[size];
然后在Visual Studio(VS)中,我使用alt + enter将var
替换为显式类型。这是我得到的:
TVal[]? zeroBased = new TVal[size];
我很惊讶地发现?
运算符,指示该类型可能为空。我以为,假设使用new
创建该类型时,该类型永远不会为null,并且这样做可能会很安全:
TVal[] zeroBased = new TVal[size];
是否存在在C#中实例化新数组可以使您返回null的情况?
注意:没有?
,代码似乎可以正常编译,我只是被VS的建议所吸引...
C#8具有允许您根据在项目中设置的上下文使用可为空的类型。您可以找到文档Here。
启用它的一种方法是在项目文件中使用<Nullable>enable</Nullable>
条目。如果有,那么当您转换为显式变量时,它将选择使用可为空的类型。