Hallo,
wie den meisten von euch bekannt sein dürfte, wird zwischen Wertetypen (elementare Datentypen wie int, double usw.) und Referenztypen (Klassen, Arrays, string) unterschieden.
Wenn ein Wertetyp übergibt wird, so wird er standardmäßig den Wert der formalen Parameter des Ausrufers nicht ändern (es sei denn man verwendet das Schlüsselwort ref). Ein Referenztyp wird hingegen nach dem Aufruf auch im Ausrufer verändert übernommen, weil die Variable ja direkt auf das Objekt weist.
Bei Arrays klappt es, Klassen konnte ich noch nicht ausprobieren, aber Strings werden nicht verändert übernommen?!
Wo ich gerade den Thread eröffnet habe, gibt es ein Schlüsselwort welche Referenztypen wie Wertetypen behandelt, also nicht ändert, also das Pendant zu ref?
Hi,
die Beobachtung mit dem String sollte, daran liegen, dass ein String Objekt immutable ist. Also unveränderbar. Wird eine Änderung an einem String Objekt ausgeführt, wird ein neues Objekt instanziert.
Tschüss
Wenn du willst, dass die aufgerufene Method dein Objekt nicht ändern kann, musst du entweder eine Kopie oder eine ReadOnly-Variante vom Objekt übergeben (siehe dazu: Durch Get-Accessor schreiben?).
Ein Schlüsselwort wirds kaum geben, da dies bei Objekten nicht so trivial ist wie bei Wertetypen.
mfg