Maison >développement back-end >C++ >Comment les tableaux et les listes sont-ils transmis en C# : par référence ou par valeur ?
Passage par référence en C# : tableaux et listes
De nombreux langages de programmation, dont C#, fournissent des types référence et des types valeur. Concernant le mécanisme de passage des tableaux et des listes, une question courante se pose : sont-ils passés par référence ou par valeur par défaut ?
Tableaux et listes en C#
En C#, les tableaux et les listes sont des types référence. Cela signifie qu'ils sont stockés dans le tas géré et référencés par des pointeurs. Lors du passage d'un type référence, la référence elle-même est passée par valeur.
Mécanisme de livraison par défaut
Par conséquent, en C#, les tableaux et les listes sont passés par valeur par défaut. Ce mécanisme de transmission signifie que toute modification apportée au sein d'une méthode ou d'une fonction au contenu d'un tableau ou d'une liste transmise sera reflétée dans le code appelant. Cependant, la réaffectation du tableau ou de la liste transmise dans une méthode ou une fonction ne sera pas visible dans le code appelant.
Exemple
Considérez l'extrait de code suivant :
<code class="language-csharp">void Foo(int[] data) { data[0] = 1; // 更改数组内容,在调用代码中可见 } void Bar(int[] data) { data = new int[20]; // 重新分配数组,在调用代码中不可见 }</code>
Utilisez le passage par référence pour optimiser les performances
Dans certains cas, passer un tableau ou une liste par référence peut améliorer les performances de votre programme. En effet, cela évite de copier l’intégralité de la structure des données, ce qui peut s’avérer très coûteux pour les grands ensembles de données.
Pour passer un tableau ou une liste par référence, vous pouvez utiliser le modificateur "ref" lors de la déclaration des paramètres de fonction. Ce modificateur indique explicitement que la référence elle-même sera transmise par référence, pas seulement par sa valeur.
Exemple
<code class="language-csharp">void Baz(ref int[] data) { data[0] = 1; // 更改数组内容,在调用代码中可见 data = new int[20]; // 重新分配数组,在调用代码中可见 }</code>
En utilisant le modificateur "ref", les modifications du contenu et les réaffectations du tableau dans la fonction "Baz" seront visibles dans le code appelant. Gardez à l’esprit que si vous n’avez pas besoin de modifier la référence elle-même dans une méthode ou une fonction, il est généralement recommandé d’éviter d’utiliser le modificateur « ref », car cela peut entraîner une confusion dans le code.
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!