故障排除:为什么不在此类型推断失败?

时间:2011-04-20 05:32:38

标签: c# generics .net-4.0 type-inference

给定声明如下所示的类型

public class EqualityProbe<T>
{
  public EqualityProbe( Func<T> 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")

我的理解是类型推断不适用于方法组(例如CanConnectToMachine)或匿名方法(lambda表达式)。
但在这种情况下,为什么编译器不会从第二个参数

推断出类型参数

2 个答案:

答案 0 :(得分:2)

C#不支持构造函数的类型推断,尽管通常可以通过使用工厂类来解决这个问题。

请在此处查看答案:Why can't the C# constructor infer type?

答案 1 :(得分:1)

那么C#是怎么回事!它没有推断构造函数。在实例化泛型类型时,您需要指定将用于泛型类型的类型。