2008-11-20 214 views

回答

18

它调用的泛型方法 - 所以你的情况,该方法可以声明像这样:

public T Create<T>() 

您可以指定在尖括号中的类型参数,就像你创建一个泛型类型的实例:

List<Event> list = new List<Event>(); 

这有帮助吗?通用方法和通用类型之间

一个区别是编译器可以尝试推断类型参数。举例来说,如果你的Create方法是不是:

public T Copy<T>(T original) 

你可以只调用

Copy(someEvent); 

,编译器会推断出你的意思是:

Copy<Event>(someEvent); 
+1

我希望我可以选择两个正确的答案。非常感谢:D – inspite 2008-11-20 15:39:44

+0

这会被认为是依赖注入的一种形式吗? – 2015-02-08 18:25:14

0

这是你提到在C#泛型方法的方式。

当定义一个通用的方法,你这样的代码:

return-type MethodName<type-parameter-list>(parameter-list) 

当调用一个通用的方法,编译器通常推断从参数指定的类型参数,如下例所示:

Array.ForEach(myArray, Console.WriteLine); 

在这个例子中,如果“myArray”是一个字符串数组,它会调用Array.ForEach <字符串>,如果它是一个int数组,它将调用Array.ForEach <int>。

有时,编译器无法从参数中推断出类型(就像您的示例一样,根本没有参数)。在这些情况下,您必须像那样手动指定它们。

0

此语法仅将泛型应用于方法。它通常用于要控制方法返回类型的场景。在使用IoC框架的代码中,您会发现很多这种语法。