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() : 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; }
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!