Maison > développement back-end > C++ > `ToList()` de C# crée-t-il une nouvelle liste de références ou de copies d'éléments ?

`ToList()` de C# crée-t-il une nouvelle liste de références ou de copies d'éléments ?

Mary-Kate Olsen
Libérer: 2025-01-02 19:05:39
original
743 Les gens l'ont consulté

Does C#'s `ToList()` Create a New List of References or Copies of Elements?

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

En C#, la méthode ToList() renvoie une nouvelle liste qui contient des éléments du recueil original. Cependant, la question se pose : crée-t-il une nouvelle liste de références ou de copies des éléments ?

Considérons l'exemple suivant :

public class MyObject
{
    public int SimpleInt { get; set; }
}

public void RunChangeList()
{
    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 scénario, ToList() crée un nouveau liste de références aux mêmes objets que la liste originale. En effet, MyObject est un type référence, ce qui signifie qu'il stocke l'adresse de l'objet en mémoire.

Lorsque la propriété SimpleInt d'un objet référencé dans la nouvelle liste est modifiée, la modification se propage à l'objet équivalent dans la liste originale. En effet, la nouvelle liste et la liste d'origine font référence au même objet.

Si MyObject était déclaré comme une structure au lieu d'une classe, la méthode ToList() créerait une nouvelle liste avec des copies des éléments de la liste originale. Dans ce cas, les modifications apportées aux éléments de la nouvelle liste n'affecteraient pas les éléments correspondants de 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal