Sobes.tech
Junior — Middle

Kendi evrensel şablonunuzu (generic) belirlerken herhangi bir sınırlama var mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# dilinde kendi evrensel şablonlarınızı (generics) tanımlarken bazı kısıtlamalar vardır:

  • Parametre türleri referans, değer veya belirli kısıtlamalara (constraints) sahip olmalıdır, örneğin belirli bir sınıftan kalıtım almak, bir arayüzü uygulamak, parametresiz bir yapıcıya sahip olmak.
  • Belirli işlevsellik gerekiyorsa, kısıtlamalar olmadan doğrudan ilkel türler kullanılamaz.
  • new() kısıtlaması olmadan parametre türünden örnek oluşturulamaz, çünkü derleyici nasıl başlatılacağını bilmiyor.
  • typeof(T) veya is T operatörleri kısıtlamalar olmadan kullanılamaz.

Kısıtlama örneği:

public class Repository<T> where T : IEntity, new()
{
    public T CreateNew() => new T();
}

Burada T, IEntity arayüzünü uygulamalı ve parametresiz bir yapıcıya sahip olmalıdır.