Sobes.tech
Middle

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]; // Чийки чыгаруучу жок

Генериктерди колдонуу, кучадагы эс тутум бөлүштүрүү жана маалыматтарды көчүрүү чыгымдарын алдын алат жана иштөө учурунда түр каталарын алдын алат.