Partilhar via


Interfaces genéricas no .NET

Este artigo fornece uma visão geral das interfaces genéricas do .NET que oferecem funcionalidade comum entre famílias de tipos genéricos.

As interfaces genéricas fornecem contrapartidas seguras para tipos às interfaces não genéricas para comparações de ordenação e igualdade, bem como para funcionalidades compartilhadas por tipos de coleções genéricas. O .NET 7 introduz interfaces genéricas para tipos semelhantes a números, por exemplo, System.Numerics.INumber<TSelf>. Essas interfaces permitem definir métodos genéricos que fornecem funcionalidade matemática, onde o parâmetro de tipo genérico é restrito a ser um tipo que implementa uma interface numérica genérica.

Observação

Os parâmetros de tipo de várias interfaces genéricas são marcados como covariantes ou contravariantes, proporcionando maior flexibilidade na atribuição e utilização de tipos que implementam estas interfaces. Para obter mais informações, consulte Covariância e contravariância.

Comparações de igualdade e ordenação

Funcionalidade de recolha

  • A ICollection<T> interface genérica é a interface básica para tipos de coleção genéricos. Ele fornece funcionalidade básica para adicionar, remover, copiar e enumerar elementos. ICollection<T> herda de ambos, genérico IEnumerable<T> e não genérico IEnumerable.

  • A IList<T> interface genérica estende a ICollection<T> interface genérica com métodos de recuperação indexada.

  • A IDictionary<TKey,TValue> interface genérica estende a ICollection<T> interface genérica com métodos de recuperação com chave. Tipos de dicionário genéricos na biblioteca de classes base do .NET também implementam a interface não genérica IDictionary .

  • A IEnumerable<T> interface genérica fornece uma estrutura de enumerador genérica. A IEnumerator<T> interface genérica implementada por enumeradores genéricos herda a interface não genérica IEnumerator; os membros MoveNext e Reset, que não dependem do parâmetro de tipo T, aparecem apenas na interface não genérica. Isso significa que qualquer consumidor da interface não genérica também pode consumir a interface genérica.

Funcionalidade matemática

.NET 7 introduz interfaces genéricas no namespace System.Numerics que descrevem tipos semelhantes a números e a funcionalidade disponível para esses tipos. Os 20 tipos numéricos que a biblioteca de classes base do .NET fornece, por exemplo, Int32 e Double, foram atualizados para implementar essas interfaces. A mais proeminente dessas interfaces é INumber<TSelf>, que corresponde aproximadamente a um número "real".

Para obter mais informações sobre essas interfaces, consulte Matemática genérica.

Ver também