问题描述
我使用C#8可为空的引用类型。
是否有一种方法可以基于可能是可为空的引用类型(甚至是可为空的结构)的泛型类型参数声明不可为空的类型?
abstract class Selector<T>
{
T SelectedItem;
// how to make item parameter not nullable?
abstract string Format(T! item);
// how to make item parameter not nullable?
Func<T!,string> FormatFunction;
}
解决方法
using System.Diagnostics.CodeAnalysis;
abstract class Selector<T>
{
T SelectedItem;
public abstract string Format([DisallowNull] T item);
}
var selector = default(Selector<string?>)!;
selector.Format(null); //warning CS8625: Cannot convert null literal to non-nullable reference type.