J'ai lu que Array.Clone performs shallow copy, cependant ce code suggère qu'une copie profonde du tableau original est créée, c.-à-d. Que les modifications du tableau cloné ne sont pas reflétées dans le tableau originalArray.Clone() effectue une copie profonde au lieu d'une copie superficielle
int[] arr = new int[] { 99, 98, 92, 97, 95 };
int[] newArr = (int[])arr.Clone();
//because this is a shallow copy newArr should refer arr
newArr[0] = 100;
//expected result 100
Console.WriteLine(arr[0]);//print 99
Est-ce que je manque quelque chose d'évident ici?
Une meilleure description serait « Lors de la copie d'une collection d'objets immuables il n'y a pas de différence entre une copie profonde et peu profonde. », Toutes les primitives sont immuables, mais vous pouvez voir ce même comportement sur un ensemble d'objets purement immuables. –
En y réfléchissant, vous devez dire «Structures immuables» pour que la deuxième partie de votre réponse soit vraie. Les classes immuables se comporteraient encore techniquement différemment, car une seule copie de l'objet immuable sera en mémoire. –