型別推斷(類)

型別推斷對建構函式不起作用這一事實可能會讓開發人員感到困惑 :

class Tuple<T1,T2>
{
   public Tuple(T1 value1, T2 value2)
   {
   }
}

var x = new Tuple(2, "two");              // This WON'T work...
var y = new Tuple<int, string>(2, "two"); // even though the explicit form will.

在沒有顯式指定型別引數的情況下建立例項的第一種方法將導致編譯時錯誤,這會導致:

使用泛型型別’Tuple <T1,T2>‘需要 2 個型別引數

常見的解決方法是在靜態類中新增輔助方法:

static class Tuple
{
    public static Tuple<T1, T2> Create<T1, T2>(T1 value1, T2 value2)
    {
         return new Tuple<T1, T2>(value1, value2);
    }
}

var x = Tuple.Create(2, "two");  // This WILL work...