Aracılığıyla paylaş


Genel Yöntemler (C# Programlama Kılavuzu)

Bir generic yöntem tür parametreleri ile aşağıdaki şekilde bildirilmiş bir yöntemi aşağıdaki gibidir:

static void Swap<T>(ref T lhs, ref T rhs)
{
    T temp;
    temp = lhs;
    lhs = rhs;
    rhs = temp;
}

Aşağıdaki kod örneği kullanarak yöntemi çağırmak için bir yolu gösterir int türü değişkeni:

public static void TestSwap()
{
    int a = 1;
    int b = 2;

    Swap<int>(ref a, ref b);
    System.Console.WriteLine(a + " " + b);
}

Tür bağımsız değişkeni de atlayabilirsiniz ve derleyici gerçekleştirip.Aşağıdaki arama Swap önceki çağrısına eşdeğerdir:

Swap(ref a, ref b);

Statik yöntemler ve örnek yöntemleri tür kesmesi için aynı kurallar uygulanır.Derleyici ilettiğiniz yöntem bağımsız değişkenleri temel tür parametreleri gerçekleştirip; Tür parametreleri yalnızca bir kısıtlama gelen gerçekleştirip veya dönüş değeri.Bu nedenle tür kesmesi parametresiz yöntemleriyle çalışmaz.Derleyici yüklenmiş yöntem imzaları çözümlemeye önce derleme zamanında tür kesmesi oluşur.Derleyici türü kesmesi mantığı aynı adı paylaşan tüm genel yöntemleri için geçerlidir.Tekrar yükleme çözümlemesi adımda derleyici yalnızca hangi tür kesmesi başarılı bu genel yöntemleri içerir.

Generic bir sýnýf içinde genel olmayan yöntemleri sınıf düzeyi tür parametreleri aşağıdaki gibi erişebilirsiniz:

class SampleClass<T>
{
    void Swap(ref T lhs, ref T rhs) { }
}

Kapsayan sınıfı aynı tür parametreleri alır bir genericyöntem tanýmlamak, bağımsız değişken için iç yöntemi kapsamında sağlanan çünkü derleyici uyarı CS0693 üretir T dış için sağlanan bağımsız değişken gizler T.Sınıf örneği oluşturulduğunda sağlanan farklı tür bağımsız değişkenleri ile bir generic sýnýf yöntemi çağırmak esnekliği gerektiren yöntem türü parametresi için başka bir tanımlayıcı sağlayan gösterildiği gibi düşünün GenericList2<T> aşağıdaki örnekte.

class GenericList<T>
{
    // CS0693 
    void SampleMethod<T>() { }
}

class GenericList2<T>
{
    //No warning 
    void SampleMethod<U>() { }
}

Sınırlama türü parametreleri yöntemlerini daha özel işlemlerini etkinleştirmek için kullanabilirsiniz.Bu sürümü, Swap<T>, şimdi adlandırılmış SwapIfGreater<T>, uygulayan tür bağımsız değişkenleri ile yalnızca kullanılabilir IComparable.

void SwapIfGreater<T>(ref T lhs, ref T rhs) where T : System.IComparable<T>
{
    T temp;
    if (lhs.CompareTo(rhs) > 0)
    {
        temp = lhs;
        lhs = rhs;
        rhs = temp;
    }
}

Genel yöntemler, birkaç tür parametreleri üzerinde aşırı yüklenebilir.Örneğin, aşağıdaki yöntemlerden tümü aynı sınıfta bulunabilir:

void DoWork() { }
void DoWork<T>() { }
void DoWork<T, U>() { }

C# dil belirtiminin

Daha fazla bilgi için, bkz. C# Dil Belirtimi.

Ayrıca bkz.

Başvuru

Genel Türlere Giriş (C# Programlama Kılavuzu)

System.Collections.Generic

Yöntemler (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu