在不同的情况下,您必须明确指定通用方法的类型参数。在以下两种情况下,编译器均无法从指定的方法参数推断所有类型参数。
一种情况是没有参数时:
public void SomeMethod<T, V>() { // 没有代码简化 } SomeMethod(); // 不编译 SomeMethod<int, bool>(); // 编译
第二种情况是一个(或多个)类型参数不属于方法参数:
public K SomeMethod<K, V>(V input) { return default(K); } int num1 = SomeMethod(3); // 不编译 int num2 = SomeMethod<int>("3"); // 不编译 int num3 = SomeMethod<int, string>("3"); // 编译.