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

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

Patricia Arquette
リリース: 2025-01-11 18:32:44
オリジナル
185 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート