c# - news - ¿Qué significa Method<ClassName>?
new features c# (5)
He visto esta sintaxis un par de veces, y está empezando a preocuparme,
Por ejemplo:
iCalendar iCal = new iCalendar();
Event evt = iCal.Create<Event>();
Es la forma en que mencionas un método genérico en C #.
Cuando defines un método genérico, codificas así:
return-type MethodName<type-parameter-list>(parameter-list)
Cuando llama a un método genérico, el compilador generalmente infiere el parámetro de tipo de los argumentos especificados, como este ejemplo:
Array.ForEach(myArray, Console.WriteLine);
En este ejemplo, si "myArray" es una matriz de cadenas, llamará a Array.ForEach <string> y si se trata de una matriz int, llamará a Array.ForEach <int>.
A veces, es imposible para el compilador deducir el tipo de los parámetros (al igual que su ejemplo, donde no hay parámetros). En estos casos, debe especificarlos de forma manual así.
Es un Método genérico, Create se declara con parámetros de tipo y verifica estos enlaces para más información:
Es un método genérico que implementa el patrón de método de fábrica .
Está llamando a un método genérico, por lo que en su caso, el método puede declararse así:
public T Create<T>()
Puede especificar el argumento de tipo en los corchetes angulares, tal como lo haría para crear una instancia de un tipo genérico:
List<Event> list = new List<Event>();
¿Eso ayuda?
Una diferencia entre los métodos genéricos y los genéricos es que el compilador puede intentar inferir el argumento de tipo. Por ejemplo, si su método Create
fuera en su lugar:
public T Copy<T>(T original)
podrías simplemente llamar
Copy(someEvent);
y el compilador inferiría que usted quería decir:
Copy<Event>(someEvent);
Esta sintaxis es solo aplicar genéricos a un método. Normalmente se usa para escenarios en los que desea controlar el tipo de devolución del método. Encontrará mucho este tipo de sintaxis en el código que usa un marco IoC.