类型推断(类)

类型推断对构造函数不起作用这一事实可能会让开发人员感到困惑 :

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...