我正在编写一个具有泛型类型的函数TVal。我写了这一行:
var zeroBased = new TVal[size];
Run Code Online (Sandbox Code Playgroud)
然后在 Visual Studio (VS) 中,我使用 alt+enter 替换var为显式类型。这是我得到的:
TVal[]? zeroBased = new TVal[size];
Run Code Online (Sandbox Code Playgroud)
我很惊讶地发现?运算符,表明该类型可能可以为空。我认为我会足够安全,假设类型在创建时永远不会为空new,并且可以刚刚完成:
TVal[] zeroBased = new TVal[size];
Run Code Online (Sandbox Code Playgroud)
是否存在在 C# 中实例化新数组可以返回 null 的情况?
注意:代码似乎在没有 的情况下编译得很好?,我只是对 VS 的建议很感兴趣......
打开 Visual Studio,与下面指定的版本相同,创建一个新项目,根据下面的 VS 项目文件内容启用可为空类型,创建一个新类,并弹出此函数:
public void Test<T>(int size)
{
var tArr = new T[size];
}
Run Code Online (Sandbox Code Playgroud)
选择var并点击alt+enter,然后选择var用显式类型替换。如果行为与我所经历的相同,您将得到:
public void Test<T>(int size)
{
T[]? tArr = new T[size];
}
Run Code Online (Sandbox Code Playgroud)