2011-04-20 56 views
3

鑑於聲明的類型如下圖所示故障排除:爲什麼在此類型推斷失敗?

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表達式)。
但在這種情況下,爲什麼不編譯器推斷第二個參數

+0

可能重複的[爲什麼不能C#構造函數推斷類型?](http://stackoverflow.com/questions/3570167/why-cant-the-c-constructor-infer-type) – AakashM 2011-04-20 06:47:57

+0

可能重複的[爲什麼C#不支持類構造函數中的泛型類型?](http://stackoverflow.com/questions/45604/why-doesnt-c-sharp-support-implied-generic-types-on-class-constructors) – nawfal 2013-05-27 03:28:38

回答

1

嘛,怎麼C#是!它可以推斷出構造函數。在實例化泛型時,您需要指定將用於泛型的類型。