Genel tür parametreleri (C# Programlama Kılavuzu)

Genel tür veya yöntem tanımında, tür parametresi, bir istemcinin genel türün bir örneğini oluşturduklarında belirt olduğu belirli bir tür için yer tutucudur. Genel Türlere Giriş içinde listelenen gibi genel bir sınıf olduğu gibi kullanılamaz çünkü aslında bir tür değildir; daha çok bir türe ait GenericList<T> şemaya benzer. kullanmak için, istemci kodu açılı ayraç içinde bir tür bağımsız değişkeni belirterek oluşturulmuş bir GenericList<T> türü bildirip örneklemesi gerekir. Bu belirli sınıfın tür bağımsız değişkeni, derleyici tarafından tanınan herhangi bir tür olabilir. Aşağıdaki gibi, her biri farklı bir tür bağımsız değişkeni kullanılarak oluşturulan herhangi bir sayıda tür örneği oluşturulabilir:

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

Bu örneklerinin her birsinde sınıfındaki her oluşum, çalışma zamanında tür bağımsız GenericList<T> T değişkeniyle değiştiritir. Bu değiştirme ile, tek bir sınıf tanımı kullanarak üç ayrı tür güvenli ve verimli nesne oluşturduk. Bu değiştirmenin CLR tarafından nasıl gerçekleştiriliyor hakkında daha fazla bilgi için bkz. Çalışma Zamanında Genel Türler.

Tür parametresi adlandırma yönergeleri

  • Tek harfli bir ad tamamen açıklayıcı değilse ve açıklayıcı bir ad değer eklemediği sürece, genel tür parametrelerini açıklayıcı adlarla ad verin.

    public interface ISessionChannel<TSession> { /*...*/ }
    public delegate TOutput Converter<TInput, TOutput>(TInput from);
    public class List<T> { /*...*/ }
    
  • Tek harfli parametreye sahip türler için tür parametre adı olarak T kullanmayı göz önünde bulundurarak.

    public int IComparer<T>() { return 0; }
    public delegate bool Predicate<T>(T item);
    public struct Nullable<T> where T : struct { /*...*/ }
    
  • Ön ek açıklayıcı tür parametre adlarını "T" ile birlikte kullanın.

    public interface ISessionChannel<TSession>
    {
        TSession Session { get; }
    }
    
  • Parametrenin adına bir tür parametresine yerleştirilen kısıtlamaları belirterek göz önünde bulundurarak. Örneğin, ile kısıtlanmış bir parametre ISession olarak çağrılmış TSession olabilir.

Kod analizi kuralı CA1715, tür parametrelerinin uygun şekilde adlandırılmış olduğundan emin olmak için kullanılabilir.

Ayrıca bkz.