Junior — Middle
Erklären Sie die Unterschiede zwischen den Prozessen des Deployments und Packens von Objekten sowie zwischen der Übergabe von Parametern per Referenz und per Wert im Kontext der Arbeit mit Referenztypen und Strukturen.
sobes.tech KI
Antwort von AI
In C#:
Boxing (Verpacken) — Prozess, bei dem ein Wertetyp (z.B. eine Struktur) in ein Referenztyp-Objekt (object) umgewandelt wird. Dabei wird eine Kopie des Wertes im Heap erstellt.
Unboxing (Entpacken) — der umgekehrte Prozess, bei dem der Wert aus dem Objekt wieder in den Wertetyp extrahiert wird.
Beispiel:
int x = 123; // Wertetyp
object o = x; // Boxing
int y = (int)o; // Unboxing
Parameterübergabe:
- Nach Wert (Standard für Wertetypen): Der Wert wird kopiert, Änderungen innerhalb der Methode beeinflussen das Original nicht.
- Nach Referenz (ref, out): Es wird die Referenz auf die Variable übergeben, Änderungen innerhalb der Methode beeinflussen das Original.
Bei Referenztypen wird eine Kopie der Referenz, aber nicht des Objekts übergeben. Änderungen an den Feldern des Objekts innerhalb der Methode sind von außen sichtbar, aber eine Neuzuweisung der Referenz nicht.
Kurz gesagt:
- Verpackung — Einbettung eines Wertetyps in ein Objekt.
- Unboxing — Extraktion des Wertetyps aus dem Objekt.
- Übergabe nach Wert — Kopie der Daten.
- Übergabe nach Referenz — Übergabe der Referenz auf die Daten.