Middle
Kullanıcının C#'ta şablon aracılığıyla ileteceği türleri sınırlamak mümkün mü?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, genel tür kısıtlamaları (generic constraints) kullanılarak.
public class MyGenericClass<T> where T : IMyInterface // T, IMyInterface'yi uygulamalı
{
// ...
}
public class AnotherGenericClass<T> where T : class // T, referans tipi olmalı
{
// ...
}
public class YetAnotherGenericClass<T> where T : struct // T, değer tipi olmalı
{
// ...
}
public class CombinedConstraints<T> where T : MyBaseClass, new(), IDisposable // Birleşik kısıtlamalar
{
// ...
}
Kısıtlamaların türleri:
where T : struct: Tür, değer tipi olmalı (nullable değil).where T : class: Tür, referans tipi olmalı.where T : new(): Tür, parametresiz genel yapıcıya sahip olmalı. Bu kısıtlama,structveclassile aynı anda kullanılamaz.where T : BaseClass: Tür,BaseClass'tan türemiş olmalı veyaBaseClassolmalı.where T : IInterface: Tür,IInterfacearayüzünü uygulamalı.where T : U: TürUolmalı veyaU'dan türemiş olmalı, buradaUbaşka bir tür parametresidir.
Birden fazla kısıtlama virgülle ayrılarak birleştirilebilir. Temel sınıf veya arayüz üzerindeki kısıtlamalar önce belirtilmelidir.