C# да boxing жана unboxing эмне жана бул процесстерден кантип качууга болот?
sobes.tech AI
AIден жооп
Boxing (бокслоо) — бул маанилүү түрдүн object же objectтен чыккан башка шилтемелүү түргө жасалган жасалма түрдө которуу. Бул процессте маанилүү жаңы эс тутум бөлүмүнө жайгаштырылат башкарылуучу кучада.
Unboxing (чийки чыгаруучу) — бул object шилтемелүү түрүнөн маанилүү түргө ачык түрдө которуу. Алгач, объекттин керектүү маанилүү түрдүн үлгүсү экенин текшерип, андан соң анын маалымат талаасы кучадан көчүрүлөт.
Мисалдар:
// Бокслоо (boxing)
int маанилүүТүр = 10;
object шилтемелүүТүр = маанилүүТүр; // маанилүүТүр `object`ке бокскоо
// Чийки чыгаруучу (unboxing)
int чыгарыла турганМаанилүү = (int)шилтемелүүТүр; // шилтемелүүТүр `int`ке чыгарыла
Бокслоо жана чийки чыгаруучуну болтурбоо үчүн генериктерди колдонуу мүмкүн. Генерик топтомдор жана методдор түздөн-түз маанилүү түрлөр менен иштейт, objectке которууну талап кылбайт. Бул иштөө ылдамдыгын жана түр коопсуздугун жогорулатат.
Генериктер менен мисал:
// ArrayList ордуна List<T> колдонуу
using System.Collections.Generic;
List<int> гениралыкТизмек = new List<int>();
гениралыкТизмек.Add(10); // Бокс жок
int маанилүү = гениралыкТизмек[0]; // Чийки чыгаруучу жок
Генериктерди колдонуу, кучадагы эс тутум бөлүштүрүү жана маалыматтарды көчүрүү чыгымдарын алдын алат жана иштөө учурунда түр каталарын алдын алат.