Werden C#-Arrays und -Listen standardmäßig als Referenz übergeben?
Arrays und Listen sind wesentliche Datenstrukturen in C#, und das Verständnis ihres Verhaltens bei der Übergabe an Funktionen ist für eine effiziente Codierung von entscheidender Bedeutung.
Werden sie per Referenz weitergegeben?
Nein, Arrays und Listen in C# werden standardmäßig nicht als Referenz übergeben. Stattdessen werden ihre Referenzen als Wert übergeben. Dies bedeutet, dass alle am Inhalt des Arrays oder der Liste vorgenommenen Änderungen für den Aufrufer sichtbar sind, Neuzuweisungen am Array oder der Liste selbst jedoch nicht auf den Aufrufer zurückgespiegelt werden.
Warum nicht als Referenz weitergeben?
Die Übergabe eines Arrays oder einer Liste als Referenz kann die Programmausführung erheblich verlangsamen, da bei jedem Aufruf der Funktion eine neue Kopie des gesamten Arrays oder der gesamten Liste erstellt werden muss. Dieser Overhead macht sich besonders bei großen Datensätzen bemerkbar.
Wann als Referenz übergeben werden sollte
Wenn Sie möchten, dass der Aufrufer in seltenen Fällen Änderungen am Inhalt und an der Referenz selbst sieht, können Sie die Referenz mithilfe des Modifikators ref explizit als Referenz übergeben. Dies sollte jedoch mit Vorsicht erfolgen, da es zu Komplexität und potenziellen Fehlern führen kann.
Beispiel
Bedenken Sie den folgenden Code:
<code class="language-c#">void Foo(int[] data) { data[0] = 1; // 调用者可以看到此更改 } void Bar(int[] data) { data = new int[20]; // 但看不到此更改 }</code>
In der ersten Funktion Foo sind alle am Inhalt des Arrays vorgenommenen Änderungen für den Aufrufer sichtbar, da der Verweis auf das Array als Wert übergeben wird. In der zweiten Funktionsleiste ist die Neuzuweisung des Arrays für den Aufrufer jedoch nicht sichtbar, da die Referenz selbst als Wert übergeben wird.
Fazit
In den meisten Fällen bietet die Übergabe von Arrays und Listen als Wert die beste Leistung und verringert das Risiko von Fehlern. Die Übergabe als Referenz sollte nur bei Bedarf explizit mit dem Modifikator ref erfolgen.
Das obige ist der detaillierte Inhalt vonWerden C#-Arrays und -Listen als Referenz oder als Wert übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!