Подтвердить что ты не робот

Что означает метод <ClassName>?

Я видел этот синтаксис пару раз сейчас, и это начинает беспокоить меня,

Например:

iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
4b9b3361

Ответ 2

Он вызывает общий метод - поэтому в вашем случае метод может быть объявлен следующим образом:

public T Create<T>()

Вы можете указать аргумент типа в угловых скобках, как и для создания экземпляра родового типа:

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

Помогает ли это?

Одно из отличий общих методов от общих типов заключается в том, что компилятор может попытаться вывести аргумент типа. Например, если ваш метод Create был вместо этого:

public T Copy<T>(T original)

вы можете просто позвонить

Copy(someEvent);

и компилятор заключил бы, что вы имели в виду:

Copy<Event>(someEvent);

Ответ 3

Это общий метод, реализующий шаблон Factory Method.

Ответ 4

Это то, как вы упоминаете общий метод в С#.

Когда вы определяете общий метод, который вы кодируете следующим образом:

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

Когда вы вызываете общий метод, компилятор обычно вводит параметр типа из указанных аргументов, как в этом примере:

Array.ForEach(myArray, Console.WriteLine);

В этом примере, если "myArray" - это строковый массив, он будет вызывать Array.ForEach <string> и если это массив int, он вызовет Array.ForEach <int> .

Иногда, невозможно компилятору вывести тип из параметров (как и в вашем примере, где нет параметров вообще). В этих случаях вы должны их вручную указывать.

Ответ 5

Этот синтаксис просто применяет общие методы к методу. Он обычно используется для сценариев, в которых вы хотите управлять возвращаемым типом метода. Этот синтаксис вы найдете в коде, который использует инфраструктуру IoC.