Compartilhar via


Parâmetros de tipo genérico (guia de programação do C#)

Em um tipo genérico ou definição de método, os tipos de parâmetros é um espaço reservado para um tipo específico de que um cliente Especifica quando eles instanciar uma variável do tipo genérico.Classe de um genérico, como GenericList<T> listados na Introdução aos genéricos (guia de programação do C#), não pode ser usado como-é porque ele não é realmente um tipo; é mais semelhante a uma cópia de um tipo.Para usar GenericList<T>, código do cliente deve declarar e criar uma instância de um tipo construído, especificando um argumento de tipo dentro dos colchetes angulares.O argumento de tipo para esta classe em particular pode ser qualquer tipo reconhecido pelo compilador.Qualquer número de instâncias do tipo construído pode ser criado, cada um usando um argumento de tipo diferente, como segue:

GenericList<float> list1 = new GenericList<float>();
GenericList<ExampleClass> list2 = new GenericList<ExampleClass>();
GenericList<ExampleStruct> list3 = new GenericList<ExampleStruct>();

Em cada uma dessas instâncias de GenericList<T>, cada ocorrência de T na classe será substituída em tempo de execução com o argumento de tipo.Por meio dessa substituição, criamos três tipo seguro e eficientes objetos separados usando uma única definição de classe.Para obter mais informações sobre como essa substituição é executada pelo CLR, consulte Genéricos no tempo de execução (guia de programação do C#).

Diretrizes de nomeação de parâmetro de tipo

  • Fazer nomear os parâmetros de tipo genérico com nomes descritivos, a menos que o nome de um única letra é totalmente auto-explicativo e um nome descritivo não adicionaria valor.

    public interface ISessionChannel<TSession> { /*...*/ }
    public delegate TOutput Converter<TInput, TOutput>(TInput from);
    public class List<T> { /*...*/ }
    
  • Considere a possibilidade de usando t como o nome do parâmetro de tipo para tipos com um parâmetro de tipo de letra único.

    public int IComparer<T>() { return 0; }
    public delegate bool Predicate<T>(T item);
    public struct Nullable<T> where T : struct { /*...*/ }
    
  • Fazer nomes de parâmetro de tipo descritivo com "T" de prefixo.

    public interface ISessionChannel<TSession>
    {
        TSession Session { get; }
    }
    
  • Considere a possibilidade de indicando restrições colocadas em um parâmetro de tipo, o nome do parâmetro.Por exemplo, um parâmetro é restrita a ISession pode ser chamado de TSession.

Consulte também

Referência

Genéricos (guia de programação do C#)

Diferenças entre modelos C++ e C# genéricos (guia de programação do C#)

System.Collections.Generic

Conceitos

Guia de programação do C#