Junior — Middle
Оё маҳдудиятҳо дар муайян кардани шаблони умумиҷаҳонии худ (геники) вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
Ҳангоми муайян кардани шаблонҳои умуми (generics) дар C# баъзе маҳдудиятҳо мавҷуданд:
- Типҳои параметр бояд ишоракунанда, навъҳои арзишӣ ё дорои маҳдудиятҳои муайян (constraints) бошанд, масалан, аз синфи муайян мерос гирифтан, интерфейсро иҷро кардан, ё доштани конструктори бе параметр.
- Агар функсионалияти махсус талаб карда шавад, истифодаи мустақим аз навъҳои primitives бе маҳдудиятҳо имконнопазир аст.
- Нест кардани намунаи навъи параметр бе маҳдудияти new() мумкин нест, зеро компилятор намедонад, чӣ гуна онро оғоз кунад.
- Истифодаи операторҳои typeof(T) ё is T бе маҳдудиятҳо имконнопазир аст.
Масали маҳдудият:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew() => new T();
}
Ин ҷо T бояд интерфейси IEntity-ро иҷро кунад ва конструктори бе параметр дошта бошад.