为什么在编译器应该推断类型的同时提供显式泛型参数类型?
public static T2 Cast<T1,T2>(this T1 arg) where T2 : class where T1 : class { return arg as T2; }
用法示例:
objOfTypeT2 = objOfTypeT1.Cast<TypeT1,TypeT2>();
与我使用更智能的编译器所需的用法相比:
objOfTypeT2 = objOfTypeT1.Cast<TypeT2>();
也许我应该更聪明:-)
注意, 我提供了返回类型 。我不想提供我在其上调用函数的对象,该方法是 Extension Method 。
规范将泛型方法的类型参数推断限制为全部或全部。您不能有部分推断。
基本原理可能是简化类型推断规则(由于已经必须考虑重载规则,它们已经非常复杂了)。