ホームページ > バックエンド開発 > C++ > 共有参照を避けるために C# でリストをディープ コピーする方法は?

共有参照を避けるために C# でリストをディープ コピーする方法は?

Patricia Arquette
リリース: 2025-01-11 18:26:46
オリジナル
346 人が閲覧しました

How to Deep Copy a List in C# to Avoid Shared References?

C# リストの真のディープ コピーの作成

チャレンジ

C# で new List<Book>(books_1) を使用して List<T> のクローンを作成するだけでは、完全に独立したコピーは作成されません。 クローンされたリストへの変更は、基になるオブジェクトへの参照を共有するため、元のリストにも影響します。

解決策: ディープコピーアプローチ

クローンされたリストへの変更が元のリストに影響を与えないようにしながら、真のディープ コピーを実現するには、次の手法を使用します。

<code class="language-csharp">List<Book> books_2 = books_1.ConvertAll(book => new Book(book.title));</code>
ログイン後にコピー

このコードは、元のリスト (Book) 内の各 books_1 オブジェクトを反復処理します。オブジェクトごとに、コンストラクターを使用して new Book オブジェクトを作成します (ここでは、Book が引数として title を取るコンストラクターを持っていると仮定して暗黙的に示しています)。 これらの新しく作成された Book オブジェクトは、新しいリスト (books_2) に追加されます。 これにより、books_2 には books_1 からのデータの完全に独立したコピーが含まれることが保証されます。

以上が共有参照を避けるために C# でリストをディープ コピーする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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