我想测试C#8.0中新的可为空的引用类型功能。
我启动了一个针对.NET Core 3.0的新项目,在.csproj
文件中启用了可为空的引用类型,并开始编码。我创建了一个简单的列表,该列表采用a string[]
并string
在等于的数组中返回abc
。现在,由于不确定abc
该数组中是否实际存在,因此我使用FirstOrDefault()
,null
如果未找到匹配项,则默认为。
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
我的方法的返回值string
,这应该现在是非空的类型。由于FirstOrDefault()
可能会返回null
,因此我希望上述方法在返回may null arg
变量时会产生警告。它不是。
查看FirstOrDefault()
Visual Studio中的签名,很清楚为什么:该方法返回一个string
,而不是string?
我期望的可为空的等效项。
使用下面的方法主体确实会产生我期望的警告:
var arg = args.Contains("abc") ? "abc" : null;
return arg;
System.Linq
在面向.NET Core 3.0时,系统库(在此示例中)是否真的不公开可空性信息?