Junior
Was ist der Unterschied zwischen Referenz- und Werttypen?
sobes.tech KI
Antwort von AI
Unterschiede in der Art der Speicherung und Übertragung von Daten:
-
Werttypen (Value Types):
- Werden direkt dort gespeichert, wo sie deklariert wurden (auf dem Stack oder innerhalb einer Instanz eines Werttyps).
- Bei Zuweisung oder Übergabe nach Wert wird eine Kopie des Wertes erstellt.
- Einschließlich primitiver Typen (int, float, bool usw.), Strukturen (struct) und Aufzählungen (enum).
- Sind sealed (versiegelt) und können nicht vererbt werden.
-
Referenztypen (Reference Types):
- Werden im Heap gespeichert. Die Variable enthält nicht den Wert selbst, sondern eine Referenz auf die Adresse im Heap.
- Bei Zuweisung oder Übergabe nach Wert wird nur die Referenz kopiert, nicht das Objekt selbst.
- Einschließlich Klassen (class), Schnittstellen (interface), Delegates (delegate) und Arrays (array).
- Können Vererbung unterstützen.
- Der Garbage Collector verwaltet die Freigabe des Speichers für Referenztypen-Objekte, auf die keine aktiven Referenzen mehr zeigen.
// Beispiel für Werttyp (struct)
struct Point
{
public int X;
public int Y;
}
// Beispiel für Referenztyp (class)
class Circle
{
public int Radius;
}
| Eigenschaft | Werttypen | Referenztypen |
|---|---|---|
| Speicherort | Stack oder innerhalb einer Instanz eines Werttyps | Heap |
| Übergabe/Zuweisung | Kopie des Wertes | Kopie der Referenz |
| Vererbung | Nein | Ja |
| Speicherverwaltung | Automatisch (Stack) | Garbage Collector |