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");
}
}
在上例中,泛型方法接收lambda表達式作爲參數(genMet(() => "Works");
),並且從此lambda表達式方法可以推斷出參數類型。爲什麼通用方法不能推斷參數類型?
爲什麼不是方法也能夠推斷參數類型在下面的例子中,在那裏,而不是lambda表達式,我們通過一個委託實例作爲一個參數:
genMet(new GenDel(() => "Doesn't work")); // Error: Using the generic type 'GenDel<T>'
// requires 1 type arguments
因此,如果這些方法的參數是封閉構造類型的實例,那麼泛型方法只能推斷參數類型?換句話說,GenMet方法的作用不是「告訴」GenDel委託什麼是GenDel的參數類型? – user1483278
@ user1483278皮特認爲,'GenDel'永遠無法推斷出它的通用參數,因爲它是一個構造函數。它需要是一種推斷它的通用參數的方法。 – Servy
對於遲到的回覆,我表示歉意。謝謝你們的幫助 – user1483278