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.
- 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);