whats news new microsoft features docs compute c# class oop generics syntax

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í.




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.