Sobes.tech
Junior — Middle

O'zining umumiy shabloni (generic) ni belgilashda cheklovlar bormi?

sobes.tech AI

AIdan javob

C# tilida o'zining umumiy shablonlarini (generics) belgilashda ba'zi cheklovlar mavjud:

  • Parametr turlar referens, qiymat turlari yoki ma'lum cheklovlarga (constraints) ega bo'lishi kerak, masalan, ma'lum bir sinfdan meros olish, interfeysni amalga oshirish, parametrsiz konstruktorga ega bo'lish.
  • Maxsus funksionallik talab qilinsa, cheklovlar bo'lmagan holda primitiv turlarni to'g'ridan-to'g'ri ishlatish mumkin emas.
  • new() cheklovisiz parametr turidan nusxa olish mumkin emas, chunki kompilyator uni qanday boshlashni bilmaydi.
  • typeof(T) yoki is T operatorlarini cheklovlar bo'lmagan holda ishlatish mumkin emas.

Cheklov misoli:

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

Bu yerda T, IEntity interfeysini amalga oshirishi va parametrsiz konstruktorga ega bo'lishi kerak.