激活Nullable reference types后,如何授权Func
参数为空?
public void Test<TIn, TOut>(Func<TIn, TOut> func)
{
var r = func(default); // default may be null, I got an error.
}
目前,我用:
public void Test<TIn, TOut>(Func<TIn, TOut> func) { var r = func(default!); // null it is ! }
但是我只想标记
func
在输入中接受null:
public void Test<TIn, TOut>(Func<TIn?, TOut> func) // do not work { var r = func(default); }
我也试图建立自己的代表:
public delegate TOut Dunc<in TIn, out TOut>(TIn? in);
但随后出现错误:请将TIn标记为类或结构。
激活Nullable引用类型后,如何授权Func参数为null?公共无效Test
public void Test<TIn, TOut>(Action<TIn, TOut> func = null)
{
var r = func?.Invoke(default);
}