C # Generics (Español)
Generic significa la forma general, no específica. En C#, genérico significa no específico para un tipo de datos en particular.
C # le permite definir clases genéricas, interfaces, clases abstractas, campos, métodos, métodos estáticos, propiedades, eventos, delegados y operadores utilizando el parámetro type y sin el tipo de datos específico. Un parámetro type es un marcador de posición para un tipo específico especificado al crear una instancia del tipo genérico.
un tipo genérico se declara especificando un parámetro de tipo entre paréntesis angulares después de un nombre de tipo, p. ej., TypeName<T>
donde T
es un parámetro de tipo.
clase genérica
las clases genéricas se definen utilizando un parámetro de tipo entre corchetes después del nombre de la clase. Lo siguiente define una clase genérica.
Arriba, el DataStore
es una clase genérica., T
se llama parámetro de tipo, que se puede usar como un tipo de campos, Propiedades, Parámetros de método, tipos de retorno y delegados en la clase DataStore
. Por ejemplo, Data
es una propiedad genérica porque hemos utilizado un parámetro de tipo T
como su tipo en lugar del tipo de datos específico.
T
como parámetro de tipo. Puede dar cualquier nombre a un parámetro de tipo., Generalmente, T
se usa cuando solo hay un parámetro de tipo. Se recomienda el uso de más legible tipo de parámetro nombre como por requisito como TSession
, TKey
, TValue
etc. Más información sobre las Directrices de nomenclatura de parámetros de tipo También puede definir varios parámetros de tipo separados por una coma.
creación de instancias de clase genérica
puede crear una instancia de clases genéricas especificando un tipo real entre corchetes angulares., El siguiente crea una instancia de la clase genérica DataStore
.
Arriba, se especifica el string
escriba en el paréntesis angulares, mientras que la creación de una instancia. Así, T
será reemplazado con un string
escriba donde T
se utiliza en la totalidad de la clase en tiempo de compilación. Por lo tanto, el tipo de propiedad Data
sería un string
.
la siguiente figura ilustra cómo funcionan los genéricos.,
Usted puede asignar un valor de cadena para el Data
propiedad. Intentar asignar valores que no sean string resultará en un error en tiempo de compilación.
Usted puede especificar los tipos de datos diferentes para diferentes objetos, como se muestra a continuación.
Clase Genérica Características
- Una clase genérica aumenta la capacidad de reutilización. Cuanto más parámetros de tipo más reutilizable se convierte., Sin embargo, demasiada generalización hace que el código sea difícil de entender y mantener.
- Una clase genérica puede ser una clase base para otras clases genéricas o no genéricas o clases abstractas.
- Una clase genérica puede derivarse de otras interfaces genéricas o no genéricas, clases o clases abstractas.
Campos Genéricos
Una clase genérica puede incluir campos genéricos. Sin embargo, no se puede inicializar.
El siguiente declara un genérico de la matriz.,
Métodos Genéricos
Un método declarado con los parámetros de tipo para el tipo de devolución o parámetros se llama a un método genérico.
arriba, los métodosAddorUpdate()
yGetData()
son métodos genéricos. El tipo de datos real del parámetro item
se especificará en el momento de crear una instancia de la clase DataStore<T>
, como se muestra a continuación.,
el tipo de parámetro genérico se puede usar con múltiples parámetros con o sin parámetros no genéricos y tipo de retorno. Los siguientes son métodos genéricos válidos de sobrecarga.
una clase no genérica puede incluir métodos genéricos especificando un parámetro de tipo entre corchetes angulares con el nombre del método, como se muestra a continuación.
ventajas de los genéricos
- Los genéricos aumentan la reutilización del código. No necesita escribir código para manejar diferentes tipos de datos.
- Los genéricos son seguros., Se obtienen errores en tiempo de compilación si se intenta utilizar un tipo de datos diferente al especificado en la definición.
- Genérico tiene una ventaja de rendimiento porque elimina las posibilidades de boxeo y unboxing.