方法是什么意思?
问题描述:
我已经看到了现在这个语法几次,它的开始让我担心,方法<ClassName>是什么意思?
例如:
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
答
这是一个泛型方法,创建声明为类型参数,并查看此链接以获取更多信息:
答
它调用的泛型方法 - 所以你的情况,该方法可以声明像这样:
public T Create<T>()
您可以指定在尖括号中的类型参数,就像你创建一个泛型类型的实例:
List<Event> list = new List<Event>();
这有帮助吗?通用方法和通用类型之间
一个区别是编译器可以尝试推断类型参数。举例来说,如果你的Create
方法是不是:
public T Copy<T>(T original)
你可以只调用
Copy(someEvent);
,编译器会推断出你的意思是:
Copy<Event>(someEvent);
答
这是你提到在C#泛型方法的方式。
当定义一个通用的方法,你这样的代码:
return-type MethodName<type-parameter-list>(parameter-list)
当调用一个通用的方法,编译器通常推断从参数指定的类型参数,如下例所示:
Array.ForEach(myArray, Console.WriteLine);
在这个例子中,如果“myArray”是一个字符串数组,它会调用Array.ForEach <字符串>,如果它是一个int数组,它将调用Array.ForEach <int>。
有时,编译器无法从参数中推断出类型(就像您的示例一样,根本没有参数)。在这些情况下,您必须像那样手动指定它们。
答
此语法仅将泛型应用于方法。它通常用于要控制方法返回类型的场景。在使用IoC框架的代码中,您会发现很多这种语法。
我希望我可以选择两个正确的答案。非常感谢:D – inspite 2008-11-20 15:39:44
这会被认为是依赖注入的一种形式吗? – 2015-02-08 18:25:14