Sobes.tech
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, struct ve class ile aynı anda kullanılamaz.
  • where T : BaseClass: Tür, BaseClass'tan türemiş olmalı veya BaseClass olmalı.
  • where T : IInterface: Tür, IInterface arayüzünü uygulamalı.
  • where T : U: Tür U olmalı veya U'dan türemiş olmalı, burada U baş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.