1
未从FirstOrDefault公开的可空引用类型信息
我想测试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时,系统库(在此示例中)是否真的不公开可空性信息?