顯式型別引數

在不同情況下,你必須明確指定泛型方法的型別引數。在以下兩種情況下,編譯器都無法從指定的方法引數推斷出所有型別引數。

一種情況是沒有引數:

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.