如何创建通用Func委托

Ale*_*aro 3 .net c# delegates func

我有这个方法

    public static T F<T>(T arg)
    {
        return arg;
    }
Run Code Online (Sandbox Code Playgroud)

我想为F创建一个Func委托.我试试这个

public Func<T, T> FuncF = F;
Run Code Online (Sandbox Code Playgroud)

但它在语法上并不正确.我怎么能这样做

D S*_*ley 6

只有类和方法本身可以是通用的.使用泛型参数的字段必须位于泛型类上下文中:

public class Test<T>
{
    public static T F(T arg)
    {
        return arg;
    }

    public Func<T, T> FuncF = F;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果F不应该连接类型参数FuncF,那么只需为其中一个参数使用不同的名称:

public class Test<T>
{
    public static U F<U>(U arg)
    {
        return arg;
    }

    public Func<T, T> FuncF = F;
}
Run Code Online (Sandbox Code Playgroud)