显式类型参数

在不同情况下,你必须明确指定泛型方法的类型参数。在以下两种情况下,编译器都无法从指定的方法参数推断出所有类型参数。

一种情况是没有参数:

public void SomeMethod<T, V>() 
{
   // No code for simplicity
}

SomeMethod(); // doesn't compile
SomeMethod<int, bool>(); // compiles

第二种情况是当一个(或多个)类型参数不是方法参数的一部分时:

public K SomeMethod<K, V>(V input)
{
    return default(K);
}

int num1 = SomeMethod(3); // doesn't compile
int num2 = SomeMethod<int>("3"); // doesn't compile
int num3 = SomeMethod<int, string>("3"); // compiles.