Heim >Backend-Entwicklung >C++ >Werden C#-Arrays und -Listen als Wert oder als Referenz übergeben?
Arrays und Listen in C#: als Referenz oder als Wert übergeben?
In C# werden Arrays und Listen als Wert übergeben. Das bedeutet, dass bei der Übergabe dieser Datenstrukturen als Argumente an Methoden oder Funktionen nur Kopien der Verweise darauf übergeben werden.
Übergeben als Wert:
In .NET sind Arrays und Listen Objekte, die auf dem Heap gespeichert sind. Wenn diese Objekte als Argumente übergeben werden, werden Verweise auf ihre Speicherorte kopiert. Dies bedeutet, dass alle am Inhalt eines Arrays oder einer Liste vorgenommenen Änderungen für den Aufrufer sichtbar sind. Wenn Sie jedoch das Array oder die Liste selbst neu zuweisen (d. h. die Referenz ändern), werden diese Änderungen vom Aufrufer nicht erkannt.
Beispiel:
<code class="language-c#">void Foo(int[] data) { data[0] = 1; // 调用方可以看到此更改 } void Bar(int[] data) { data = new int[20]; // 调用方看不到此更改 }</code>
Ref für Pass-by-Referenz verwenden:
Wenn Sie möchten, dass der Anrufer sowohl Inhaltsänderungen als auch Referenzneuzuweisungen beobachtet, können Sie den Ref-Modifikator verwenden. Dadurch wird die Referenz als Referenz übergeben und sichergestellt, dass alle an der Referenz selbst vorgenommenen Änderungen für den Aufrufer sichtbar sind.
Beispiel für die Verwendung von ref:
<code class="language-c#">void Foo(ref int[] data) { data[0] = 1; // 调用方可以看到此更改 data = new int[20]; // 调用方也可以看到此更改 }</code>
Daher werden in C# Arrays und Listen standardmäßig als Wert übergeben. Wenn Sie die Referenz selbst als Referenz übergeben möchten, können Sie die Signatur der Methode so ändern, dass sie den Modifikator ref enthält.
Das obige ist der detaillierte Inhalt vonWerden C#-Arrays und -Listen als Wert oder als Referenz übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!