问题描述
|
给定一个声明的类型,如下所示
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,\"Probe machine is online\")
我的理解是类型推断不适用于方法组(例如CanConnectToMachine)或匿名方法(lambda表达式)。
但是在这种情况下,编译器为什么不从第二个参数推断出类型参数解决方法
C#不支持构造函数的类型推断,尽管通常可以通过使用工厂类来克服。
请在此处查看答案:为什么C#构造函数无法推断类型?,好吧,C#就是这样!它确实为构造函数推断。在实例化泛型类型时,您需要指定将用于泛型类型的类型。