ホームページ >バックエンド開発 >C++ >C#で一般的なリストを効率的に複製する方法は?

C#で一般的なリストを効率的に複製する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-30 20:05:12471ブラウズ

How to Efficiently Duplicate a Generic List in C#?

c#

の一般的なリストを効率的に複製します

ジェネリックリストのコピーを作成することは、C#で頻繁に起こるタスクですが、言語には直接list.Clone()メソッドがありません。 この記事では、リストを複製するためのいくつかの効果的な戦略について説明します

値タイプリストの複製: 値タイプを含むリストの場合、コピーは単純です:

これにより、元の要素が同一の要素を含む新しいリストが作成されます。 これは、値タイプに対して
<code class="language-csharp">List<YourType> newList = new List<YourType>(oldList);</code>
浅いコピー

を実行することに注意してください。 ディープコピーリファレンスタイプリスト:

参照タイプを使用すると、共有オブジェクトの参照を避けるために深いコピーが必要です。 あなたの要素が実装されている場合

これにより、各要素が個別に反復し、クローン化されます。ICloneable

<code class="language-csharp">List<ICloneable> oldList = new List<ICloneable>();
List<ICloneable> newList = new List<ICloneable>(oldList.Count);

oldList.ForEach(item => newList.Add((ICloneable)item.Clone()));</code>
コピーコンストラクターのレバレッジ:

要素がコピーコンストラクターを持っているが、実装しない場合は

これは、各要素のコピーコンストラクターを使用します ICloneable

カスタムクローンメソッド:
<code class="language-csharp">List<YourType> oldList = new List<YourType>();
List<YourType> newList = new List<YourType>(oldList.Count);

oldList.ForEach(item => newList.Add(new YourType(item)));</code>

より複雑なシナリオについては、クローンプロセスを細かく制御するためのカスタムコピー方法(例:

)または工場メソッドを検討してください。 再利用性のための

カプセル化:

コード組織と再利用性を改善するには、これらのアプローチを拡張メソッドまたはスタンドアロンヘルパー関数に包みます。

以上がC#で一般的なリストを効率的に複製する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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