Ist int[]
in C# ein Referenztyp oder ein Werttyp?
In C# sind grundlegende Datentypen wie int
Werttypen. Sie werden direkt in Variablen gespeichert und ihre Werte werden kopiert, wenn sie an Methoden übergeben oder anderen Variablen zugewiesen werden.
Arrays von Werttypen verhalten sich jedoch anders. Auch wenn die Elemente des Arrays Werttypen sind, ist das Array selbst ein Referenztyp. Dies liegt daran, dass die Array-Referenz auf den Speicherort verweist, an dem die Array-Elemente gespeichert sind, und nicht auf die Elemente selbst.
Auswirkungen auf Funktionsaufrufe
Bei der Übergabe eines Arrays an eine Funktion ist es nicht erforderlich, den Modifikator ref
oder out
anzugeben, da Arrays standardmäßig als Referenz übergeben werden.
Funktionen, die ein Array empfangen, können nur auf eine Referenz auf das Array zugreifen, nicht auf die tatsächlichen Elemente. Wenn die Funktion Elemente ändert, werden diese Änderungen im ursprünglichen Array widergespiegelt.
Beispiel:
Bedenken Sie den folgenden Code:
<code class="language-csharp">int[] array = { 1, 2, 3 }; ModifyArray(array); Console.WriteLine(array[0]); // 输出:4</code>
ModifyArray
Die Funktion ändert das erste Element des Arrays:
<code class="language-csharp">public static void ModifyArray(int[] arr) { arr[0] = 4; }</code>
Selbst wenn wir das Array als Wert übergeben (ohne den Modifikator ref
), werden die in der Funktion vorgenommenen Änderungen im ursprünglichen Array widergespiegelt, da das Array ein Referenztyp ist.
Das obige ist der detaillierte Inhalt vonIst ein Array von Werttypen (z. B. „int[]') ein Referenztyp oder ein Werttyp in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!