【发布时间】:2020-04-20 12:07:28
【问题描述】:
作为转向 C# 8 可空引用类型的一部分,我遇到了以下代码(简化):
public string GetIfExists(string key)
{
dict.TryGetValue(key, out var value);
return value;
}
return 行警告可能返回空引用,这是有道理的。所以我尝试用[return: MaybeNull] 属性注释该方法,但警告仍然令我惊讶。从documentation,我了解到这个属性将返回类型标记为可选null,即使实际类型不允许。
看来我避免警告的唯一选择是标记返回类型string?。那么[return: MaybeNull]有什么用呢?
【问题讨论】:
-
docs.microsoft.com/en-us/dotnet/csharp/nullable-attributes: "你可以应用一些属性:......来完整描述参数和返回值的空状态......你向编译器提供的关于当允许或禁止空值时,您的 API 用户将获得更好的警告。”
-
我尝试在您的方法上使用
[return: MaybeNull],警告消失了。您能否显示您尝试过的确切代码,然后还显示重建后警告仍然存在的屏幕截图? -
@LasseV.Karlsen 我认为这个问题在我提出这个问题后在编译器中得到了解决。我不能再复制它了。
-
好的,很高兴你设法解决它:)
标签: c#-8.0 nullable-reference-types