Sobes.tech
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-ро иҷро кунад ва конструктори бе параметр дошта бошад.