Heim > Backend-Entwicklung > C++ > Wie werden Arrays und Listen in C# übergeben: per Referenz oder per Wert?

Wie werden Arrays und Listen in C# übergeben: per Referenz oder per Wert?

DDD
Freigeben: 2025-01-10 10:56:42
Original
527 Leute haben es durchsucht

How Are Arrays and Lists Passed in C#: By Reference or By Value?

Referenzübergabe in C#: Arrays und Listen

Viele Programmiersprachen, einschließlich C#, bieten Referenztypen und Werttypen. In Bezug auf den Übergabemechanismus von Arrays und Listen stellt sich häufig die Frage: Werden sie standardmäßig als Referenz oder als Wert übergeben?

Arrays und Listen in C#

In C# sind Arrays und Listen Referenztypen. Dies bedeutet, dass sie im verwalteten Heap gespeichert und durch Zeiger referenziert werden. Bei der Übergabe eines Referenztyps wird die Referenz selbst als Wert übergeben.

Standardliefermechanismus

Daher werden in C# Arrays und Listen standardmäßig als Wert übergeben. Dieser Übergabemechanismus bedeutet, dass alle Änderungen, die innerhalb einer Methode oder Funktion am Inhalt eines übergebenen Arrays oder einer übergebenen Liste vorgenommen werden, im aufrufenden Code widergespiegelt werden. Eine Neuzuweisung des übergebenen Arrays oder der übergebenen Liste innerhalb einer Methode oder Funktion ist jedoch im aufrufenden Code nicht sichtbar.

Beispiel

Bedenken Sie den folgenden Codeausschnitt:

<code class="language-csharp">void Foo(int[] data)
{
    data[0] = 1; // 更改数组内容,在调用代码中可见
}

void Bar(int[] data)
{
    data = new int[20]; // 重新分配数组,在调用代码中不可见
}</code>
Nach dem Login kopieren

Verwenden Sie Pass-by-Reference, um die Leistung zu optimieren

In manchen Fällen kann die Übergabe eines Arrays oder einer Liste als Referenz die Leistung Ihres Programms verbessern. Dies liegt daran, dass das Kopieren der gesamten Datenstruktur vermieden wird, was bei großen Datensätzen sehr teuer sein kann.

Um ein Array oder eine Liste als Referenz zu übergeben, können Sie beim Deklarieren von Funktionsparametern den Modifikator „ref“ verwenden. Dieser Modifikator gibt explizit an, dass die Referenz selbst als Referenz übergeben wird, nicht nur ihr Wert.

Beispiel

<code class="language-csharp">void Baz(ref int[] data)
{
    data[0] = 1; // 更改数组内容,在调用代码中可见
    data = new int[20]; // 重新分配数组,在调用代码中可见
}</code>
Nach dem Login kopieren

Durch die Verwendung des Modifikators „ref“ werden Änderungen am Inhalt und Neuzuweisungen des Arrays in der Funktion „Baz“ im aufrufenden Code sichtbar. Beachten Sie, dass es generell empfehlenswert ist, den Modifikator „ref“ zu vermeiden, wenn Sie die Referenz selbst in einer Methode oder Funktion nicht ändern müssen, da dies zu Codeverwirrung führen kann.

Das obige ist der detaillierte Inhalt vonWie werden Arrays und Listen in C# übergeben: per Referenz oder per Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage