Laden...

Theoretische Überlegungen mit 'Call by reference'

Erstellt von hdsf vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.020 Views
hdsf Themenstarter:in
89 Beiträge seit 2005
vor 16 Jahren
Theoretische Überlegungen mit 'Call by reference'

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?

A
254 Beiträge seit 2007
vor 16 Jahren

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

D
462 Beiträge seit 2005
vor 16 Jahren

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

hdsf Themenstarter:in
89 Beiträge seit 2005
vor 16 Jahren

Okay, und wieder ein Stück weiter - danke schön! 👍