C# 疑难解答:为什么';t型推理在这里失败了吗?

C# 疑难解答:为什么';t型推理在这里失败了吗?,c#,generics,.net-4.0,type-inference,C#,Generics,.net 4.0,Type Inference,给定如下所示声明的类型 public class EqualityProbe<T> { public EqualityProbe( Func<T> functionToGetActualValue, T expectedValue, string probeDescription) {..} 公共类EqualityProbe { 公共EqualityProbe(Func functionToGetActualValue,T expectedValue,string

给定如下所示声明的类型

public class EqualityProbe<T>
{
  public EqualityProbe( Func<T> functionToGetActualValue, T expectedValue, string probeDescription) {..}
公共类EqualityProbe
{
公共EqualityProbe(Func functionToGetActualValue,T expectedValue,string probeDescription){..}
客户端代码:

// cannot infer bool here
new EqualityProbe(CanConnectToMachine, true, "Probe machine is online")
// compiles fine
new EqualityProbe<bool>(CanConnectToMachine, true, "Probe machine is online")
//此处无法推断布尔值
新的EqualityProbe(可以连接到机器,正确,“探针机器在线”)
//编撰精良
新的EqualityProbe(可以连接到机器,正确,“探针机器在线”)
我的理解是,类型推断不适用于方法组(例如CanConnectionToMachine)或匿名方法(lambda表达式)。
但是在这种情况下,为什么编译器不从第二个参数推断类型参数呢?

C#不支持构造函数的类型推断,尽管这通常可以通过使用工厂类来克服

请参见此处的答案:

好吧,这就是C#!它不适用于构造函数。在实例化泛型类型时,您需要指定泛型类型将使用的类型。

可能重复的可能重复的