Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不是';泛型方法是否能够推断参数类型?_C#_Generics - Fatal编程技术网

C# 为什么不是';泛型方法是否能够推断参数类型?

C# 为什么不是';泛型方法是否能够推断参数类型?,c#,generics,C#,Generics,类型推断仅适用于泛型方法,而不适用于泛型类型或其构造函数。在第二个示例中没有类型推断-您显式地给出了要使用的委托类型。在这种情况下,您需要提供类型参数,因为没有非泛型的GenDel类型。所以泛型方法只能在这些方法的参数是封闭构造类型的实例时推断参数类型?换句话说,GenMet方法的任务不是“告诉”GenDel委托什么是GenDel的参数类型?@user1483278问题在于GenDel永远无法推断它的泛型参数,因为它是一个构造函数。这将需要一个方法来推断它的一般论点。我为迟来的答复道歉。谢谢你们

类型推断仅适用于泛型方法,而不适用于泛型类型或其构造函数。

在第二个示例中没有类型推断-您显式地给出了要使用的委托类型。在这种情况下,您需要提供类型参数,因为没有非泛型的
GenDel
类型。

所以泛型方法只能在这些方法的参数是封闭构造类型的实例时推断参数类型?换句话说,GenMet方法的任务不是“告诉”GenDel委托什么是GenDel的参数类型?@user1483278问题在于
GenDel
永远无法推断它的泛型参数,因为它是一个构造函数。这将需要一个方法来推断它的一般论点。我为迟来的答复道歉。谢谢你们两位的帮助
public delegate T GenDel<T>();

class Program
{
    public static void genMet<T>(GenDel<T> d) { }

    static void Main(string[] args)
    {           
        genMet(new GenDel<string>(() => "Works"));
        genMet(() => "Works");
    }
}
        genMet(new GenDel(() => "Doesn't work")); // Error: Using the generic type 'GenDel<T>' 
                                                  // requires 1 type arguments