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

本文关键字:在这里 失败 排除 为什么 类型 故障 | 更新日期: 2023-09-27 17:50:33

给定如下所示声明的类型

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表达式)。
但是在这种情况下,为什么编译器不从第二个参数

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

推断类型参数呢?

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

在这里看到答案:为什么c#构造函数不能推断类型?

c#就是这样!它不为构造函数进行推断。在实例化泛型类型时,您需要指定将用于泛型类型的type。