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