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 "Пётр"