Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Copie de tableau et mémoire | Manipulation et Tri de Tableaux
Tableaux en C#

Copie de tableau et mémoire

Glissez pour afficher le menu

Lorsque vous travaillez avec des tableaux en C#, il est important de comprendre comment ils sont stockés en mémoire et ce qui se passe lorsque vous les copiez ou les assignez. Les tableaux en C# sont des types référence, ce qui signifie que les variables contiennent une référence (ou un pointeur) vers l'emplacement où les données du tableau sont stockées en mémoire, et non les données elles-mêmes. Cela a des implications importantes lorsque vous assignez une variable de tableau à une autre ou lorsque vous souhaitez effectuer une véritable copie du contenu d'un tableau. Si vous négligez ces détails, vous risquez de modifier accidentellement des données à des endroits inattendus, ce qui peut entraîner des bugs difficiles à détecter.

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031
namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] original = { 1, 2, 3, 4, 5 }; // Assigning the array reference int[] assigned = original; // Copying the array elements int[] copied = new int[original.Length]; for (int i = 0; i < original.Length; i++) { copied[i] = original[i]; } // Modify the assigned array assigned[0] = 99; // Modify the copied array copied[1] = 77; System.Console.WriteLine("original: " + string.Join(", ", original)); System.Console.WriteLine("assigned: " + string.Join(", ", assigned)); System.Console.WriteLine("copied: " + string.Join(", ", copied)); } } }

Lorsque vous assignez une variable de tableau à une autre, les deux variables pointent vers le même emplacement mémoire. Cela signifie qu'une modification effectuée via l'une des variables apparaît dans l'autre, car il s'agit simplement de deux références vers le même tableau. Pour éviter cela, il faut copier chaque élément dans un nouveau tableau, comme illustré dans le code ci-dessus. Cela crée un nouveau tableau en mémoire, de sorte que les modifications apportées à un tableau n'affectent pas l'autre.

Cela introduit les concepts de copie superficielle et de copie profonde. Une copie superficielle ne copie que la référence du tableau, et non les éléments eux-mêmes. Une copie profonde crée un nouveau tableau et copie chaque élément, ce qui donne deux tableaux indépendants.

Program.cs

Program.cs

1234567891011121314151617
namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 10, 20, 30 }; int[] shallow = numbers; shallow[1] = 99; System.Console.WriteLine("numbers: " + string.Join(", ", numbers)); System.Console.WriteLine("shallow: " + string.Join(", ", shallow)); } } }

Cet exemple de code illustre ce qui se produit lors d'une copie superficielle d'un tableau en C#. Lorsque vous assignez une variable de tableau à une autre, comme int[] shallow = numbers;, vous ne créez pas un nouveau tableau ni ne copiez les éléments. Au lieu de cela, les deux variables, numbers et shallow, pointent vers le même tableau en mémoire. Cela signifie que toute modification effectuée via l'une des variables sera visible via l'autre.

Note
Définition

Une copie superficielle copie la référence du tableau, de sorte que les deux variables pointent vers le même emplacement mémoire. Une copie profonde crée un nouveau tableau et copie tous les éléments, rendant ainsi les tableaux indépendants.

1. Que se passe-t-il lorsque vous assignez une variable de tableau à une autre en C# ?

2. Comment créer une véritable copie d'un tableau ?

3. Pourquoi est-il important de comprendre la mémoire des tableaux lors de la manipulation des données ?

question mark

Que se passe-t-il lorsque vous assignez une variable de tableau à une autre en C# ?

Sélectionnez la réponse correcte

question mark

Comment créer une véritable copie d'un tableau ?

Sélectionnez la réponse correcte

question mark

Pourquoi est-il important de comprendre la mémoire des tableaux lors de la manipulation des données ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 5

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Section 3. Chapitre 5
some-alt