Sobes.tech
Junior

Типҳои умумӣ (Generic) дар C# чист?

sobes.tech AI

Ҷавоб аз AI

Типҳои умумӣ (Generic) дар C# имкон медиҳанд, ки синфҳо, сохторҳо, интерфейсҳо, делегатҳо ва методҳо бо параметрҳои тип муайян карда шаванд. Ин имконият медиҳад, ки коди такроршаванда ва бехатарии навъи баландтар шавад.

Афзалиятҳои асосӣ:

  • Такрори коди: Як синф ё метод метавонад бо намудҳои гуногуни маълумот кор кунад, бидуни такрори логика.
  • Бехатарии навъ: Компилятор навъҳоро дар вақти компиляция санҷида, хатогиҳои вақти иҷроиро, ки бо номувофиқии навъҳо алоқаманданд, пешгирӣ мекунад.
  • Кам кардани иҷроиш: Барои навъҳои арзишӣ (struct), boxing анҷом намешавад, ки иҷроишро нисбат ба истифодаи object беҳтар мекунад.

Принсипҳои кор:

  • Параметрҳои навъ: Бо истифода аз кунҷҳои <T> муайян карда мешаванд, ки дар он T номи параметри навъ аст. Ҳар номе метавонад истифода шавад, аммо T одатан истифода мешавад.
  • Эҷоди намунаҳо: Ҳангоми эҷоди намунаи навъи умумӣ, бояд барои ҳар як параметри навъ навъи маълумоти мушаххас нишон дода шавад.
  • Маҳдудиятҳо (Constraints): Мумкин аст, ки маҳдудиятҳо ба параметрҳои навъ гузошта шаванд, ки нишон медиҳанд, ки кадом имконот бояд дастгирӣ шаванд (масалан, иҷрои интерфейс, синфи асосӣ, набудани конструктор ва ғайра).

Масалан истифодаи синфи умумии List<T>:

// Эҷоди рӯйхати рақамҳои бутун
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);

// Эҷоди рӯйхати сатрҳо
List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");