首頁 > 後端開發 > C++ > 為什麼添加多個物件時我的列表項目會被覆蓋?

為什麼添加多個物件時我的列表項目會被覆蓋?

Linda Hamilton
發布: 2025-01-19 20:23:10
原創
671 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板