Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona una visión general de las interfaces genéricas de .NET que proporcionan funcionalidad común entre familias de tipos genéricos.
Las interfaces genéricas proporcionan equivalentes con seguridad de tipos a las interfaces no genéricas para ordenación y comparaciones de igualdad, y para una funcionalidad compartida con los tipos de colección genéricos. .NET 7 presenta interfaces genéricas para tipos de tipo numérico, por ejemplo, System.Numerics.INumber<TSelf>. Estas interfaces permiten definir métodos genéricos que proporcionan funcionalidad matemática, donde el parámetro de tipo genérico está restringido para ser un tipo que implementa una interfaz genérica numérica.
Nota:
Los parámetros de tipo de varias interfaces genéricas se marcan como covariante o contravariante, lo que proporciona mayor flexibilidad en la asignación y el uso de tipos que implementan estas interfaces. Para obtener más información, vea Covarianza y Contravarianza.
Comparaciones de igualdad y ordenación
En el espacio de nombres System, las interfaces genéricas System.IComparable<T> y System.IEquatable<T>, igual que sus homólogas no genéricas, definen métodos para realizar comparaciones de ordenación y comparaciones de igualdad, respectivamente. Los tipos implementan estas interfaces para proporcionar la capacidad de realizar estas comparaciones.
En el System.Collections.Generic espacio de nombres, las interfaces genéricas IComparer<T> y IEqualityComparer<T> ofrecen una manera de definir una comparación de ordenación o igualdad para los tipos que no implementan las interfaces System.IComparable<T> o System.IEquatable<T>. También proporcionan una manera de redefinir esas relaciones para los tipos que sí lo hacen.
Estas interfaces se usan mediante métodos y constructores de muchas de las clases de colección genéricas. Por ejemplo, puede pasar un objeto genérico IComparer<T> al constructor de la SortedDictionary<TKey,TValue> clase para especificar un criterio de ordenación para un tipo que no implemente System.IComparable<T>. Hay sobrecargas del Array.Sort método estático genérico y el List<T>.Sort método de instancia para ordenar matrices y listas mediante implementaciones genéricas IComparer<T> .
Las Comparer<T> clases genéricas y EqualityComparer<T> proporcionan clases base para las implementaciones de las IComparer<T> interfaces genéricas y IEqualityComparer<T> y también proporcionan comparaciones de ordenación e igualdad predeterminadas a través de sus respectivas Comparer<T>.Default propiedades y EqualityComparer<T>.Default .
Funcionalidad de recopilación
La ICollection<T> interfaz genérica es la interfaz básica para los tipos de colección genéricos. Proporciona funcionalidad básica para agregar, quitar, copiar y enumerar elementos. ICollection<T> hereda tanto de la interfaz genérica IEnumerable<T> como de la interfaz no genérica IEnumerable.
La IList<T> interfaz genérica amplía la ICollection<T> interfaz genérica con métodos para la recuperación indizada.
La IDictionary<TKey,TValue> interfaz genérica amplía la ICollection<T> interfaz genérica con métodos para la recuperación con claves. Los tipos de diccionario genéricos de la biblioteca de clases base de .NET también implementan la interfaz no genérica IDictionary .
La IEnumerable<T> interfaz genérica proporciona una estructura de enumerador genérica. La interfaz genérica IEnumerator<T> implementada por enumeradores genéricos hereda la interfaz no genérica IEnumerator; los miembros MoveNext y Reset, que no dependen del parámetro de tipo
T
, solo aparecen en la interfaz no genérica. Esto significa que cualquier consumidor de la interfaz no genérica también puede consumir la interfaz genérica.
Funcionalidad matemática
.NET 7 presenta interfaces genéricas en el espacio de nombres System.Numerics que describen tipos numéricos y la funcionalidad disponible para ellos. Los 20 tipos numéricos que proporciona la biblioteca de clases base de .NET, por ejemplo, Int32 y Double, se han actualizado para implementar estas interfaces. El más destacado de estas interfaces es INumber<TSelf>, que aproximadamente corresponde a un número "real".
Para obtener más información sobre estas interfaces, consulte Matemáticas genéricas.