Maison > développement back-end > C++ > ToList() de C# crée-t-il une copie complète ou une copie superficielle des éléments de la liste ?

ToList() de C# crée-t-il une copie complète ou une copie superficielle des éléments de la liste ?

DDD
Libérer: 2025-01-04 00:28:39
original
718 Les gens l'ont consulté

Does C#'s ToList() Create a Deep Copy or a Shallow Copy of the List's Elements?

ToList() : crée-t-il une nouvelle liste ?

En C#, ToList() est une méthode qui crée une nouvelle liste avec des copies des éléments de la liste existante. Dans le cas de types référence comme les classes, les copies contiennent des références aux mêmes objets que les originaux.

Considérez le code suivant :

public class MyObject
{
    public int SimpleInt { get; set; }
}
...
var objs = new List<MyObject>() { new MyObject() { SimpleInt = 0 } };
var whatInt = ChangeToList(objs);

public int ChangeToList(List<MyObject> objects)
{
    var objectList = objects.ToList();
    objectList[0].SimpleInt = 5;
    return objects[0].SimpleInt;
}
Copier après la connexion

Dans ce code, la méthode ChangeToList prend un liste d'objets MyObject et la convertit en une nouvelle liste à l'aide de ToList(). Il modifie ensuite la propriété SimpleInt du premier objet de la nouvelle liste.

Le point clé à noter ici est que MyObject est un type référence. Par conséquent, l'opération ToList() crée une nouvelle liste, mais les éléments de la nouvelle liste sont des références aux mêmes objets de la liste d'origine. Par conséquent, lorsque la propriété SimpleInt de l'objet référencé dans la nouvelle liste est modifiée, le changement est également répercuté sur l'objet correspondant dans la liste d'origine. C'est pourquoi le résultat de la méthode RunChangeList() serait 5, car la modification apportée dans la nouvelle liste est propagée à la liste d'origine.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal