Method <ClassName>是什么意思?

ins*_*ite 44 c# oop generics syntax class

我现在已经看过几次这种语法了,它开始让我担心,

例如:

iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
Run Code Online (Sandbox Code Playgroud)

CMS*_*CMS 37

这是一个通用方法,使用类型参数声明Create,并检查此链接以获取更多信息:

  • -1实质上意味着仅链接的答案。虽然这些链接非常有用,可供您进一步参考,但是如果您的帖子中对它们的内容进行了总结,而不是仅用一句话来详细说明,那将是很好的。 (2认同)

Jon*_*eet 25

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

public T Create<T>()
Run Code Online (Sandbox Code Playgroud)

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

List<Event> list = new List<Event>();
Run Code Online (Sandbox Code Playgroud)

这有帮助吗?

泛型方法和泛型类型之间的一个区别是编译器可以尝试推断类型参数.例如,如果您的Create方法是:

public T Copy<T>(T original)
Run Code Online (Sandbox Code Playgroud)

你可以打电话

Copy(someEvent);
Run Code Online (Sandbox Code Playgroud)

并且编译器会推断你的意思是:

Copy<Event>(someEvent);
Run Code Online (Sandbox Code Playgroud)