Sobes.tech
Middle

C#'ta boxing ve unboxing nedir ve bu süreçlerden nasıl kaçınılabilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Boxlama (boxing), değer türünün object veya object'ten türeyen başka herhangi bir referans türüne dönüşümüdür. Bu işlemde, değer yeni bir bellek alanına yerleştirilir ve yönetilen yığında saklanır.

Unboxing (ayrıştırma), object türünden bir referansın açıkça değer türüne dönüştürülmesidir. Öncelikle, nesnenin istenen değer türünün örneği olup olmadığı kontrol edilir ve ardından veri alanı yoldan kopyalanır.

Örnekler:

// Boxing
int değerTürü = 10;
object referansTürü = değerTürü; // değerTürü boxing yapılır

// Unboxing
int ayrıştırılmışDeğer = (int)referansTürü; // referansTürü unboxing yapılır

Boxlama ve unboxing işlemlerinden kaçınmak için generikler kullanılabilir. Generik koleksiyonlar ve metodlar doğrudan değer türleriyle çalışır, object'e dönüştürmeye gerek kalmaz. Bu, performansı artırır ve tür güvenliğini sağlar.

Generiklerle örnek:

// ArrayList yerine List<T> kullanımı
using System.Collections.Generic;

List<int> jenerikListe = new List<int>();
jenerikListe.Add(10); // Box yapılmaz

int değer = jenerikListe[0]; // Unbox yapılmaz

Generiklerin kullanımı, heap'te bellek ayırma ve veri kopyalama maliyetlerini önler ve çalışma zamanında tür hatalarını engeller.