Compartilhar via


Interfaces genéricas no .NET

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

As interfaces genéricas fornecem contrapartes fortemente tipadas para interfaces não genéricas com a finalidade de realizar comparações de ordenação e de igualdade e para a funcionalidade que é compartilhada por tipos de coleção genéricos. 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, em que 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 no uso de tipos que implementam essas interfaces. Para obter mais informações, consulte Covariance e Contravariance.

Comparações de ordem e igualdade

Funcionalidade de coleção

  • 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 da IEnumerable<T> genérica e da IEnumerable não genérica.

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

  • A interface genérica IDictionary<TKey,TValue> estende a interface genérica ICollection<T> com métodos para recuperação por chave. Tipos genéricos de dicionário 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érico. 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

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

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

Consulte também