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.