CodeBlanks Logo Icon CodeBlanks

Value ve reference türleri

C# kursu · Başlangıç · Ders 17/116

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

  1. 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
  2. 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.

  3. object'i int'e unboxing et

    int n = ____ o;
    Cevabı göster
    int n = (int) o;

Başlangıç bölümündeki tüm dersler