With the following code
abstract class Base
{
protected abstract T? GetValue<T>([CallerMemberName] string propertyName = "");
}
class Derived : Base
{
protected override T GetValue<T>([CallerMemberName] string propertyName = "")
{
return default;
}
}
the compiler tells me at return default;
that I have a CS8603 "Possible null reference return" which is true. However if I append a ?
to the return type of that method so that reads (like the abstract method) protected override T? GetValue<T>([CallerMemberName] string propertyName = "")
the compiler tells me
- CS0508 'Derived.GetValue(string)': return type must be 'T' to match overridden member 'Base.GetValue(string)'.
- CS0453 The type 'T' must be a non-nullable value type in order to use it as parameter 'T' in the generic type or method 'Nullable'.
How do I tell the compiler my intent that GetValue<T>
might return a null reference and not that the return type of that method should be Nullable<T>
?