Value ve reference türleri
Değer türleriyle referans türleri arasındaki temel farkı öğrenirsin.
Boxing
Boxing, bir değer türünü object (veya arabirim) türüne kutulamaktır. Değer stack'ten heap'e kopyalanır ve başvuru o adrese bağlanır.
Örnek: object box = 42; Burada int değeri heap'e konur ve box ona işaret eder. Kutulama otomatik ve örtük gerçekleşir; ek bir kod yazmazsın.
Boxing kolaylık sağlar ama ek bellek ayırdığı için yavaştır. Mümkün olduğunca değer türünü doğrudan kullanmak daha hızlıdır.
Unboxing ve performans
Unboxing kutulanmış bir object'i tekrar değer türüne çıkarmaktır. Boxing'in tersidir ama açık cast gerektirir.
Örnek: int n = (int)box; Burada (int) parantezi derleyiciye türü açıkça söyler. Yanlış türle unboxing yaparsan InvalidCastException fırlar.
Boxing ve unboxing birlikte maliyetlidir; her ikisi de heap işi yapar. Şimdilik unboxing'in açık cast gerektirdiğini bilmen yeter.
Uygulama Boxing ve unboxing yap
Bir object box değişkenine 42 ata (boxing olur). int value = (int)box; yazarak değeri geri çıkar (unboxing). Sonra value'yu Console.WriteLine ile yazdır.
Örnek çözümü göster
object box = 42; int value = (int)box; Console.WriteLine(value);
Örnek çözüm:
using System;
class Program {
static void Main() {
object box = 42;
int value = (int)box;
Console.WriteLine(value);
}
}
Kendini test et
-
Dönüşüm yönünü adına eşle
- int'ten object'e
- boxing
- object'ten int'e
- unboxing
- int'ten double'a
- örtük
- string'den int'e
- Parse
-
Hangi satır boxing oluşturur?
- double d = 5;
- object o = 5;
- int n = (int)5.0;
- string s = "5";
Cevabı göster
object o = 5; — Doğru! object'e değer türü atayınca boxing olur.
-
object'i int'e unboxing et
int n = ____ o;Cevabı göster
int n = (int) o;