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.