Sobes.tech
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.