Boxing

Eintrag zuletzt aktualisiert am: 24.08.2004

Als Boxing wird im .NET Framework die Umwandlung eines Wert-Typs in einen Referenz-Typ bezeichnet (Gegenteil: Unboxing).

Alle Typen im .NET Framework sind Klassen. Jedoch gibt es zwei Arten von Typen: Wertetypen (Werttypen) und Referenztypen.

Wertetypen

  • Werte liegen auf dem Stack
  • existieren als Performanz-Gründen
  • Instanziierung mit new-Operator optional
  • Vergleichoperation vergleicht die Werte
  • Kopieroperation kopiert den Wert

Referenztypen

  • Werte liegen auf dem Heap
  • Zeiger auf den Wert liegt auf dem Stack
  • Instanziierung mit new-Operator notwendig
  • Kopieroperation kopiert den Zeiger
  • Vergleichoperation vergleicht die Zeiger
  • Flache Wertkopie möglich durch Aufruf von MemberWiseClone()
  • Tiefe Wertkopie möglich durch eigene Implementierung (IClonable)

Beispiel für Boxing und Unboxing

// Beispiel: Werttyp ohne Member
int i = 1234, i2;
object oi, oi2;

// Boxing
oi = i;

// Unboxing
i2 = (int) oi;
// oder:
i2 = Convert.ToInt32(oi);