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.