2017-07-02 84 views
0

我有泛型類編譯器不能推斷泛型類構造函數類型的原因?

public class Foo<T> 
{ 
    public Foo(T data) {} 
} 

和通用靜態方法

public static class Utils 
{ 
    public static void Foo<T>(T data) {} 
} 

我想知道爲什麼這個不行

Bar b = new Bar(); 

Utils.Foo<Bar>(b); 
Utils.Foo(b);  

new Foo<Bar>(b); 
new Foo(b); // compiler can't infer type 

回答

0

的最後一個例子是行不通的,因爲沒有隱式類型對C#中構造函數的推理。

+0

他知道我懷疑,這只是爲什麼它不能「隱含」知道使用什麼類型? –

+0

您正在回答OP問題。他問爲什麼最後一行不會編譯,而第二行(沒有給出類型)編譯。 – KernelMode

+0

如果更準確地說,爲什麼這還沒有在C#中實現,由於什麼原因 – kogoia