Parametry obecného typu (Průvodce programováním v C#)

V definici obecného typu nebo metody je parametr typu zástupný symbol pro konkrétní typ, který klient určí při vytváření instance obecného typu. Obecnou třídu, například uvedenou v úvodu do obecných typů, nelze použít tak, jak jsou, protože ve skutečnosti není typu. Je to spíše podrobný plán GenericList<T> pro typ. Chcete-li použít , musí kód klienta deklarovat a vytvořit instanci konstruovaný typ zadáním argumentu typu GenericList<T> v hranatých závorkách. Argument typu pro tuto konkrétní třídu může být libovolný typ rozpoznán kompilátorem. Je možné vytvořit libovolný počet vytvořených instancí typu, z nichž každá používá jiný argument typu, a to následujícím způsobem:

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

V každé z těchto instancí třídy je každý výskyt ve třídě nahrazen za běhu GenericList<T> T argumentem typu. Pomocí této náhrady jsme pomocí jedné definice třídy vytvořili tři samostatné typové a efektivní objekty. Další informace o tom, jak se tato náhrada provádí clr, najdete v tématu Obecné typy za běhu.

Pokyny pro pojmenování parametrů typů

  • Pojmete parametry obecného typu popisnými názvy, pokud není jedno písmeno zcela srozumitelné a popisný název by nepřidá hodnotu.

    public interface ISessionChannel<TSession> { /*...*/ }
    public delegate TOutput Converter<TInput, TOutput>(TInput from);
    public class List<T> { /*...*/ }
    
  • Zvažte použití T jako názvu parametru typu pro typy s jedním parametrem typu s jedním písmenem.

    public int IComparer<T>() { return 0; }
    public delegate bool Predicate<T>(T item);
    public struct Nullable<T> where T : struct { /*...*/ }
    
  • Do prefix descriptive type parameter names with "T" (Názvy parametrů popisného typu předpony) zadejte "T".

    public interface ISessionChannel<TSession>
    {
        TSession Session { get; }
    }
    
  • Zvažte možnost indikovat omezení umístěná na parametr typu v názvu parametru. Například parametr omezený na může ISession být volán TSession .

Pomocí pravidla analýzy kódu CA1715 je možné zajistit, aby parametry typu byly pojmenovány odpovídajícím způsobem.

Viz také