ホームページ >バックエンド開発 >C++ >真のオブジェクト独立性を実現するためにリストのディープコピーを作成するにはどうすればよいですか?

真のオブジェクト独立性を実現するためにリストのディープコピーを作成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-11 18:32:44143ブラウズ

How to Create Deep Copies of List for True Object Independence?

リストのディープコピーによる真のオブジェクトの独立性の実現

コード例は、List<Book> books_1 オブジェクトを含む 2 つのリスト (List<Book> books_2Book) を示しています。 単純な代入では、books_2books_1 のコピーのように見えますが、books_2 は同じ books_1 オブジェクトへの参照を共有しているため、Book を変更すると

にも影響します。

ディープ クローン作成の重要性

真に独立したコピーを作成するには、共有参照を避ける必要があります。 これには、完全に新しい Book オブジェクトを作成し、元のオブジェクトからのデータを設定する必要があります。これはディープ コピーと呼ばれるプロセスです。

ディープコピーの実装

ディープコピーは、Select または ConvertAll メソッドのラムダ式を使用して効率的に作成できます。

Select の使用:

<code class="language-csharp">List<Book> books_2 = books_1.Select(book => new Book(book.title)).ToList();</code>

ConvertAll の使用:

<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>

どちらのアプローチでも、ラムダ式内に新しい Book インスタンスが生成され、元の title オブジェクトから Book プロパティがコピーされます。 結果の books_2 リストには、完全に新しい独立した Book オブジェクトが含まれます。

ディープコピーの利点

ディープコピーにより、books_2 への変更が books_1 に影響を与えないことが保証されます。これは、元のデータを変更せずに変更されたコピーを操作する必要がある場合に非常に重要です。 このアプローチにより、データの整合性が保証され、意図しない副作用が防止されます。

以上が真のオブジェクト独立性を実現するためにリストのディープコピーを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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