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?

Jan 10, 2025 am 10:56 AM

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:

void Foo(int[] data)
{
    data[0] = 1; // 更改数组内容,在调用代码中可见
}

void Bar(int[] data)
{
    data = new int[20]; // 重新分配数组,在调用代码中不可见
}
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

void Baz(ref int[] data)
{
    data[0] = 1; // 更改数组内容,在调用代码中可见
    data = new int[20]; // 重新分配数组,在调用代码中可见
}
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!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte Mar 03, 2025 pm 05:53 PM

C Sprachfunktionsformat -Buchstaben -Fall -Konvertierungsschritte

GULC: C -Bibliothek von Grund auf neu gebaut GULC: C -Bibliothek von Grund auf neu gebaut Mar 03, 2025 pm 05:46 PM

GULC: C -Bibliothek von Grund auf neu gebaut

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert? Mar 03, 2025 pm 05:52 PM

Welche Werte sind von C -Sprachfunktionen zurückgegeben? Was bestimmt den Rückgabewert?

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die? Mar 03, 2025 pm 05:53 PM

Was sind die Definitionen und Aufrufregeln von C -Sprachfunktionen und was sind die?

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)? Mar 12, 2025 pm 04:50 PM

Wie funktioniert die C -Standard -Vorlagenbibliothek (STL)?

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Wo ist der Rückgabewert der C -Sprachfunktion im Speicher? Mar 03, 2025 pm 05:51 PM

Wo ist der Rückgabewert der C -Sprachfunktion im Speicher?

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient? Mar 12, 2025 pm 04:52 PM

Wie benutze ich Algorithmen aus der STL (sortieren, finden, transformieren usw.) effizient?

eindeutiger Gebrauch und Phrasenfreigabe eindeutiger Gebrauch und Phrasenfreigabe Mar 03, 2025 pm 05:51 PM

eindeutiger Gebrauch und Phrasenfreigabe

See all articles