Junior — Middle
Öz ümumi şablonunuzu (generic) təyin edərkən məhdudiyyətlər var mı?
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində özünəməxsus ümumi şablonlarınızı (generics) təyin edərkən bəzi məhdudiyyətlər mövcuddur:
- Parametr tipləri istinad, dəyər tipləri və ya müəyyən məhdudiyyətlər (constraints) ilə olmalıdır, məsələn, müəyyən bir sinifdən irs almaq, interfeys tətbiq etmək, parametrsiz konstruktoru olmaq.
- Xüsusi funksionallıq tələb olunursa, məhdudiyyətlər olmadan primitiv tiplər birbaşa istifadə edilə bilməz.
- new() məhdudiyyəti olmadan parametr tipindən nümunə yaradıla bilməz, çünki tərtibçi onu necə başlatacağını bilmir.
- typeof(T) və ya is T operatorlarından məhdudiyyətlər olmadan istifadə etmək mümkün deyil.
Məhdudiyyət nümunəsi:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Burada T, IEntity interfeysini tətbiq etməli və parametrsiz konstruktoru olmalıdır.