Sobes.tech
Middle

C#-də boxing və unboxing nədir və bu proseslərdən necə qaçınmaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Boxlama (qutarma) — bu dəyər növünün object və ya object-dən törəyən başqa hər hansı referans növünə qeyri-rəsmi çevrilməsidir. Bu prosesdə, dəyər idarə olunan yığılmış yaddaşda yeni yaddaş sahəsinə yerləşdirilir.

Unboxing (qutarmadan çıxarma) — object referans növündən aydın şəkildə dəyər növünə çevrilməsidir. Əvvəlcə, obyektin istənilən dəyər növünün nümunəsi olub-olmadığı yoxlanılır və sonra onun məlumat sahəsi yoldan kopyalanır.

Nümunələr:

// Qutarma (boxing)
int dəyərNövü = 10;
object referansNövü = dəyərNövü; // dəyərNövü `object`-ə qutulanır

// Qutarmadan çıxarma (unboxing)
int çıxarılmışDəyər = (int)referansNövü; // referansNövü int-ə çıxarılır

Qutarmadan və çıxarmadan qaçınmaq üçün generiklərdən istifadə etmək olar. Generik kolleksiyalar və metodlar birbaşa dəyər növləri ilə işləyir, object-ə çevirməyə ehtiyac olmadan. Bu, performansı artırır və növ təhlükəsizliyini təmin edir.

Generiklərlə nümunə:

// ArrayList yerinə List<T> istifadə
using System.Collections.Generic;

List<int> generikSiyahı = new List<int>();
generikSiyahı.Add(10); // Qutarma yoxdur

int dəyər = generikSiyahı[0]; // Çıxarma yoxdur

Generiklərin istifadəsi, yaddaş ayırma və məlumatların köçürülməsi xərclərini önləyir və işləmə vaxtı növ səhvlərini qarşısını alır.