2017-07-02 86 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