Interfaces genéricas no .NET

Este tópico fornece uma visão geral de interfaces genéricas do NET's que fornecem funcionalidades comuns 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, o que fornece mais flexibilidade na atribuição e no uso dos tipos que implementam essas interfaces. Para obter mais informações, consulte Covariância e contravariância.

Comparações de ordem e igualdade

Funcionalidade de coleção

  • A interface genérica ICollection<T> é a interface básica para tipos de coleção genérica. Ela fornece a 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 interface genérica IList<T> estende a interface genérica ICollection<T> com métodos para recuperação indexada.

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

  • A interface genérica IEnumerable<T> fornece uma estrutura de enumerador genérico. A interface genérica IEnumerator<T> implementada pelos 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, só aparecem na interface não genérica. Isso significa que qualquer consumidor da interface não genérica também poderá consumir a interface genérica.

Funcionalidade matemática

O .NET 7 apresenta interfaces genéricas no namespace System.Numerics 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 .NET fornece, por exemplo, Int32 e Double, foram atualizados para implementar essas interfaces. A mais proeminente dessas interfaces é a INumber<TSelf>, que corresponde aproximadamente a um número "real".

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

Confira também