Sobes.tech
Junior — Middle

Was sind die Unterschiede zwischen Referenz- und Werttypen in C# und was sind ihre wichtigsten Unterschiede in der Verwendung?

sobes.tech KI

Antwort von AI

In C# werden die Typen in Werttypen (value types) und Referenztypen (reference types) unterteilt.

Werttypen speichern die Daten direkt. Beispiele: int, double, struct. Beim Zuweisen oder Übergabe an eine Methode wird der Wert selbst kopiert, also wird eine unabhängige Kopie erstellt.

Referenztypen speichern eine Referenz auf ein Objekt im Speicher (im Heap). Beispiele: class, string, Arrays. Beim Zuweisen wird nur die Referenz kopiert, nicht das Objekt, daher können mehrere Variablen auf dasselbe Objekt verweisen.

Hauptunterschiede:

  • Speicherung: Werttypen befinden sich meist auf dem Stack, Referenztypen im Heap.
  • Kopieren: Werttypen werden durch Wert kopiert, Referenztypen durch Referenz.
  • Verhalten bei Änderungen: Änderungen an einem Werttyp beeinflussen andere Kopien nicht, Änderungen an einem Referenzobjekt wirken sich auf alle Referenzen aus.

Beispiel:

int a = 5;
int b = a; // Kopie des Wertes
a = 10; // a bleibt 5

class Person { public string Name; }
Person p1 = new Person { Name = "Иван" };
Person p2 = p1; // Kopie der Referenz
p2.Name = "Пётр"; // p1.Name ändert sich ebenfalls zu "Пётр"