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");