Compréhension approfondie du passage de référence de tableau en C#
En C#, les tableaux sont différents des types de données de base. Ce sont des types de référence. Cela soulève la question : comment les tableaux sont-ils transmis aux méthodes ? Passer par valeur ou par référence ?
Transmission de valeur
Par défaut, les références aux tableaux sont passées par valeur. Cela signifie qu'une copie de la référence est créée et transmise à la méthode. Les modifications apportées au contenu du tableau à l'intérieur de la méthode seront visibles par le code appelant, mais toute réaffectation au tableau lui-même ne sera pas propagée à l'appelant.
Passez par référence
Pour modifier la référence elle-même, vous pouvez utiliser le modificateur ref
. Passer un tableau par référence permet à l'appelant de voir toutes les modifications apportées à la référence, y compris les réaffectations.
Exemple
Le code suivant montre la différence entre le passage par valeur et le passage par référence :
<code class="language-csharp">void Foo(int[] data) { data[0] = 1; // 调用方可见此更改 } void Bar(ref int[] data) { data = new int[20]; // 调用方可见此更改 }</code>
Lors de l'appel Foo
, une copie de la référence est transmise. La modification du contenu du tableau dans Foo
sera visible dans le code appelant. Cependant, les réaffectations vers des tableaux au sein de Foo
ne seront pas vues par l'appelant.
En revanche, lors de l'appel de ref
avec le modificateur Bar
, la référence elle-même est transmise. Toute modification de la référence, y compris les réaffectations, sera visible dans le code appelant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!