如何标记通用委托以接受空值?

问题描述 投票:0回答:1

激活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 (Func func){var r = func(default); //默认值可能是...

c# nullable
1个回答
-1
投票
public void Test<TIn, TOut>(Action<TIn, TOut> func = null)

    {
        var r = func?.Invoke(default);

    }
© www.soinside.com 2019 - 2024. All rights reserved.