Compartilhar via


Interfaces Genéricas

Este tópico fornece uma visão geral das interfaces genéricas que fornecem a funcionalidade comum entre famílias de tipos genéricos.

Interfaces Genéricas

Interfaces genéricas fornecem contrapartes de tipo seguro para interfaces não genéricas para comparações de classificação e igualdade e para a funcionalidade que é compartilhada por tipos de coleção genérica.

Observação

Começando com o .NET Framework versão 4, o tipo parâmetros de várias interfaces genéricas são marcados covariant ou contravariant, proporcionando maior flexibilidade na atribuição e usando tipos que implementam essas interfaces.Consulte Covariância e/contravariância no genéricos.

Comparações de Igualdade e classificação

No namespace System, as interfaces genéricas System.IComparable<T> e System.IEquatable<T>, assim como suas contrapartes não genéricas, definem métodos de comparações de classificação e comparações de igualdade, respectivamente. Tipos implementam essas interfaces para fornecer a capacidade de executar tais comparações.

No System.Collections.Generic namespace, o IComparer<T> e IEqualityComparer<T> interfaces genéricas oferecem uma maneira de definir uma comparação de pedidos ou de igualdade para tipos que não implementam o System.IComparable<T> ou System.IEquatable<T> interface genérica e eles fornecem uma maneira para redefinir essas relações para tipos que fazer. Essas interfaces são usadas pelos métodos e construtores de muitas das classes de coleção genérica. Por exemplo, você pode passar um objeto genérico IComparer<T> para o construtor da classe SortedDictionary<TKey, TValue> para especificar uma ordem de classificação de um tipo que não implementa um genérico System.IComparable<T>. Há sobrecargas do método estático genérico Array.Sort e o método da instância List<T>.Sort para classificar matrizes e listas usando implementações genéricas IComparer<T>.

As classes genéricas Comparer<T> e EqualityComparer<T> fornecem classes base para implementações das interfaces genéricas IComparer<T> e IEqualityComparer<T>, e também fornecem padrão de comparações de ordenação e de igualdade por meio de suas respectivas propriedades Comparer<T>.Default e EqualityComparer<T>.Default.

Funcionalidade da Coleção

A interface genérica ICollection<T> é a interface básica para os tipos de coleção genérica. Ele fornece funcionalidade básica para adição, remoção, copiando e enumerar elementos. ICollection<T>herda de ambos os genérico IEnumerable<T> genéricas e IEnumerable.

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 por chave. Tipos de dicionário genérico na biblioteca de classe base do .NET Framework também implementan 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 pelo enumeradores genéricos herda interface não genérica IEnumerator; os membros MoveNext e Reset, que não dependem de parâmetro do tipo T, aparecem somente 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.

Consulte também

Referência

System.Collections.Generic

System.Collections.ObjectModel

Conceitos

Classes genéricas no .NET Framework

Coleções Genéricas na .NET Framework

Representantes Genéricos para Manipulação de Matrizes e Listas

Vantagens e Limitações dos Genéricos

Covariância e/contravariância no genéricos