首页 >后端开发 >C++ >为什么添加多个对象时我的列表项会被覆盖?

为什么添加多个对象时我的列表项会被覆盖?

Linda Hamilton
Linda Hamilton原创
2025-01-19 20:23:10705浏览

Why Are My List Items Overwritten When Adding Multiple Objects?

添加多个项目期间列表值会被覆盖

问题:

向列表添加多个项目会导致所有列表项目被最后添加项目的值覆盖。 无论项目的初始值如何,都会发生这种情况。

原因:

  • 基于引用的赋值:在面向对象的上下文中,通过引用传递对象意味着任何属性修改都会影响原始对象。
  • 对象重用:代码可能在循环中重用单个对象实例。 后续赋值会覆盖对象的属性,从而导致观察到的覆盖行为。

解决方案:

解决方案涉及为每次迭代创建一个新的对象实例:

<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>

替代方案:利用结构

从类切换到结构消除了覆盖问题,因为:

  • 基于值的传递:结构体是值类型;它们是按值传递的。
  • 对象复制:传递结构体时,会创建一个副本,而不是引用。 每个 Add 操作都会创建一个新的结构体实例,并保持唯一的值。

以上是为什么添加多个对象时我的列表项会被覆盖?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn