【问题标题】:Troubleshooting: Why doesn't type inference fail here?疑难解答:为什么这里没有类型推断失败?
【发布时间】:2011-04-20 14:03:43
【问题描述】:

给定一个声明如下所示的类型

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# generics .net-4.0 type-inference


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-19
      • 2017-06-22
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-11
      • 2011-03-08
      相关资源
      最近更新 更多