Maison > développement back-end > C++ > Pourquoi les éléments de ma liste sont-ils écrasés lors de l'ajout de plusieurs objets ?

Pourquoi les éléments de ma liste sont-ils écrasés lors de l'ajout de plusieurs objets ?

Linda Hamilton
Libérer: 2025-01-19 20:23:10
original
672 Les gens l'ont consulté

Why Are My List Items Overwritten When Adding Multiple Objects?

La valeur de la liste est écrasée lors de l'ajout de plusieurs éléments

Problème :

L'ajout de plusieurs éléments à une liste entraîne l'écrasement de tous les éléments de la liste par la valeur du dernier élément ajouté. Cela se produit quelles que soient les valeurs initiales des éléments.

Causes :

  • Affectation basée sur une référence : Dans des contextes orientés objet, passer des objets par référence signifie que toute modification de propriété affecte l'objet d'origine.
  • Réutilisation d'objet : Le code réutilise probablement une seule instance d'objet dans une boucle. Les affectations ultérieures écrasent les propriétés de l'objet, conduisant au comportement d'écrasement observé.

Résolution :

La solution consiste à créer une nouvelle instance d'objet pour chaque itération :

<code class="language-csharp">foreach (string t in tagList)
{
    Tag _tag = new Tag(); // New Tag object for each iteration

    _tag.tagName = t;
    tags.Add(_tag);
}</code>
Copier après la connexion

Alternative : utiliser des structures

Passer d'une classe à une structure élimine le problème d'écrasement car :

  • Transmission basée sur des valeurs : Les structures sont des types de valeur ; ils sont transmis par valeur.
  • Copie d'objet : Lorsqu'une structure est passée, une copie est créée, pas une référence. Chaque Add opération crée une nouvelle instance de structure, en conservant des valeurs uniques.

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