Dav*_*vid 3 c# nullable-reference-types
用下面的代码
abstract class Base
{
protected abstract T? GetValue<T>([CallerMemberName] string propertyName = "");
}
class Derived : Base
{
protected override T GetValue<T>([CallerMemberName] string propertyName = "")
{
return default;
}
}
Run Code Online (Sandbox Code Playgroud)
编译器告诉我,return default;我有一个 CS8603“可能的空引用返回”,这是真的。但是,如果我将 a 附加?到该方法的返回类型,以便读取(如抽象方法),protected override T? GetValue<T>([CallerMemberName] string propertyName = "")编译器会告诉我
如何告诉编译器我的意图GetValue<T>可能返回空引用,而不是该方法的返回类型应该是Nullable<T>?
解决方案是将[return: MaybeNull]属性放置在方法重写上,如下所示:
[return: MaybeNull]
protected override T GetValue<T>([CallerMemberName] string propertyName = "")
{
return default;
}
Run Code Online (Sandbox Code Playgroud)
编译器现在不再列出警告 CS8603。