Sobes.tech
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