Wann ref in C# verwendet werden sollte und wann nicht erforderlich
In C# umfasst die Übergabe von Referenztypparametern nach Wert nur die Übergabe der Referenz selbst, nicht einer Kopie des Objekts. Dies ähnelt der Übergabe von Zeigern nach Wert in C oder C. Änderungen an Parameterwerten sind auf die Funktion innerhalb der Funktion beschränkt, während Änderungen am zugrunde liegenden Objekt an den Aufrufer zurückgegeben werden.
Wenn andererseits Parameter per Referenz übergeben werden, sind alle an ihnen vorgenommenen Änderungen für den Aufrufer sichtbar, da sie Änderungen an tatsächlichen Variablen darstellen.
Obwohl es zunächst verwirrend erscheinen mag, ist es wichtig, den Unterschied zwischen der Wertübergabe und der Referenzübergabe zu verstehen. Im Allgemeinen wird dringend empfohlen, ref
/out
nicht zu verwenden, es sei denn, dies ist unbedingt erforderlich. Diese Mechanismen ermöglichen tatsächlich das Abrufen zusätzlicher Rückgabewerte. Es ist am besten, ihre Verwendung zu minimieren, um zu verhindern, dass Methoden zu komplex werden.
In dem in der Frage genannten Fall ist für received_s
das Argument ref
nicht erforderlich, da keine Kopie des Objekts erstellt wird, wenn sein Wert an die Funktion übergeben wird. remoteEP
erfordert jedoch ref
, da die Funktion beabsichtigt, ihren Wert zu ändern und die Änderung für den Aufrufer sichtbar zu machen.
Denken Sie daran, dass Objekte in C# im Wesentlichen Zeiger auf tatsächliche Objekte sind. Wenn ein Objekt an eine Funktion übergeben wird, wird tatsächlich ein Zeiger übergeben, über den der Inhalt des Objekts geändert werden kann. Sie sollten ref
/out
nur verwenden, wenn Sie wirklich ein neues Objekt innerhalb einer Funktion austauschen oder erstellen müssen, was der Verwendung von Doppelzeigern ähnelt.
Das obige ist der detaillierte Inhalt vonC#-Schlüsselwort „ref': Wann sollten Sie es verwenden und wann ist es unnötig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!