ホームページ >バックエンド開発 >C++ >複数のオブジェクトを追加するとリスト項目が上書きされるのはなぜですか?

複数のオブジェクトを追加するとリスト項目が上書きされるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-19 20:23:10673ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。