Aracılığıyla paylaş


where (genel tür kısıtlaması) (C# Başvurusu)

Genel tür tanımında where yan tümcesi, bir genel bildirimde tanýmlanan bir tür parametresi için bağımsız değişken olarak kullanılan türleri kısıtlamaları belirtmek için kullanılır.Örneğin, generic bir sýnýf bildirebilirsiniz MyGenericClassgibi type parametresi T uygulayan IComparable arabirimi:

public class MyGenericClass<T> where T:IComparable { }

[!NOT]

Nereden daha fazla bilgi için bkz: bir sorgu ifadesinde yan where tümcesi (C# Başvurusu).

Arabirim kısıtlamaları, yanında bir where yan tümcesi türü belirtilen sınıf bir temel sınıf (veya o sınıf olması) olması gerektiğini bildiren bir temel sınıf kısıtlaması içerebilir genel türü için tür bağımsız değişkeni olarak kullanılmak üzere.Böyle bir kısıtlama kullanılıyorsa, bu tür parametresi üzerinde diğer kısıtlamalardan önce yer almalıdır.

class MyClass<T, U>
    where T : class 
    where U : struct
{ }

where Yan tümcesi bir kurucu kısıtlaması da kapsayabilir.New operatörünü kullanarak bir tür parametresi örneği oluşturmak da mümkündür; Ancak, bunu yapmak için tür parametresi olmalıdır kısıtlı yapıcı kısıtlaması tarafından new().New() kısıtlaması sağlanan herhangi bir tür bağımsız değişkeni bir erişilebilir olması gerektiğini bildiğiniz derleyici sağlar parametresiz--veya varsayılan--kurucu.Örne?in:

public class MyGenericClass<T> where T : IComparable, new()
{
    // The following line is not possible without new() constraint:
    T item = new T();
}

new() Kısıtlama görünür, son where yan tümcesi.

Birden çok türde parametre kullanmak where yan tümcesi her tür parametresinde, örneğin:

interface IMyInterface
{
}

class Dictionary<TKey, TVal>
    where TKey : IComparable, IEnumerable
    where TVal : IMyInterface
{
    public void Add(TKey key, TVal val)
    {
    }
}

Aþaðýdaki genel yöntemlerin parametreleri yazın bazı sınırlamalar da ekleyebilirsiniz:

public bool MyMethod<T>(T t) where T : IMyInterface { }

Temsilciler türü parametresi kısıtlamaları tanımlamak için sözdizimi, yöntemleri aynı olduğuna dikkat edin:

delegate T MyDelegate<T>() where T : new()

Genel Temsilciler hakkında daha fazla bilgi için bkz: Genel Temsilciler.

Sözdizimi ve kullanım kısıtlamaları hakkında daha fazla bilgi için bkz: Tür parametreleri üzerinde kısıtlamalar.

C# dil belirtiminin

Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# sözdizimi ve kullanımı için kesin bir kaynaktır.

Ayrıca bkz.

Başvuru

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

new Kısıtlaması (C# Başvurusu)

Tür Parametrelerindeki Kısıtlamalar (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu

Diğer Kaynaklar

C# Başvurusu