2010-12-30 30 views

Respuesta

94

Genéricos se refiere a la técnica de escribir el código para una clase sin especificar el tipo de datos en los que la clase trabaja.

Especifique el tipo de datos cuando declare una instancia de una clase genérica. Esto permite que una clase genérica se especialice para muchos tipos de datos diferentes y solo tenga que escribir la clase una vez.

Un gran ejemplo son las muchas clases de colección en .NET. Cada clase de colección tiene su propia implementación de cómo se crea y administra la colección. Pero usan genéricos para permitir que su clase trabaje con colecciones de cualquier tipo.

http://msdn.microsoft.com/en-us/library/ms379564(VS.80).aspx

+11

+1 Para tratar de elaborar y lo que es más fácil para el op a entender! –

+0

gracias por su explicación. Tengo una idea básica ahora sobre los genéricos. – Karthik

+0

También los puntos mencionados en la respuesta también se aplican a los métodos individuales. – Sai

6

Realmente no hay nada especial acerca de los genéricos en C#. A C# simplemente le gusta tomar conceptos bien conocidos y llamarlos de otra manera (por ejemplo, llamar a los procedimientos "métodos estáticos" o llamar al flatMap "SelectMany"). En este caso particular, los genéricos son solo el nombre de C# para el polimorfismo paramétrico de rango 1.

+2

Necesito memorizar esto para ser utilizado para las respuestas en las entrevistas ... Creo que le volarán los calcetines ... (No tengo idea de qué ¡dijiste pero suena genial!) – ppumkin

1

De MSDN:

genéricos son la característica más poderosa de C#. Los genéricos le permiten definir estructuras de datos de tipo seguro, sin comprometerse con los tipos de datos reales . Esto da como resultado un importante incremento en el rendimiento y un mayor código de calidad , ya que puede reutilizar los algoritmos de procesamiento de datos sin duplicar el código específico del tipo. En concepto, los genéricos son similares a las plantillas de C++, pero son drásticamente diferentes en la implementación y las capacidades de .

https://msdn.microsoft.com/en-us/library/ms379564.aspx