Interfaces genéricas no .NET

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

As interfaces genéricas fornecem contrapartidas seguras para tipos para interfaces não genéricas para comparações de ordenação e igualdade e para funcionalidades compartilhadas 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, onde o parâmetro de tipo genérico é restrito a ser um tipo que implementa uma interface numérica genérica.

Nota

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 genéricos IEnumerable<T> e não genéricos 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 MoveNext e Reset membros, que não dependem do parâmetro Ttype, 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 introduz interfaces genéricas no namespace que descrevem tipos semelhantes a System.Numerics 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 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.

Consulte também