Parâmetros de tipos genéricos (Guia de programação C#)

Em um tipo genérico ou definição de método, parâmetros de tipo é um espaço reservado para um tipo específico se um cliente Especifica quando eles instanciar uma variável do tipo genérico.Uma classe genérica, sistema autônomo GenericList<T> listado no Introdução ao Generics (guia de programação C#), não pode ser usado sistema autônomo - porque realmente não é um tipo; é mais semelhante a um plano gráfico para 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 de 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, sistema autônomo 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>, todas as ocorrências de T na classe será substituída em time de execução com o argumento de tipo. Por meio dessa substituição, criamos três fortemente tipado e eficientes objetos separados usando uma definição de classe única.Para obter mais informações sobre como essa substituição é executada pelo CLR, consulte Genéricos no time de execução (guia de programação translation from VPE for Csharp).

Diretrizes de nomenclatura parâmetro de tipo

  • Fazer nome genérico digite parâmetros com nomes descritivos, a menos que uma única letra nome seja completamente auto-explicação 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 usando T sistema autônomo o nome de 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 { /*...*/ }
    
  • Fazernomes de parâmetro de tipo descritivo prefixo com “ T ”.

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

Consulte também

Conceitos

Guia de Programação C#

Referência

Generics (Guia de programação C#) 

Diferenças entre modelos C++ e Generics C# (guia de programação C#)

System.Collections.Generic