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

C#で一般的なリストを効率的にクローンする方法は?

Susan Sarandon
リリース: 2025-01-30 20:13:15
オリジナル
546 人が閲覧しました

How to Efficiently Clone Generic Lists in C#?

ジェネリックの汎用リストの効率的なクローニング:in -depth分析

質問声明:

C#では、一般的なオブジェクトのリストを高度にクローン化するにはどうすればよいですか?リスト内の単一のオブジェクトはクローン化されていますが、リスト自体には構築された「クローン」メソッドがありません。 メソッド1:クローニングのタイプ

クローンは、値タイプの汎用リストにとって非常に簡単です。元のリストと同じコンテンツの新しいリストを作成するだけです。

メソッド2:参照タイプを深くコピーします

汎用リストに参照タイプが含まれており、(浅い複製の代わりに)詳細にコピーする必要がある場合、次の

インターフェイス方法を使用できます。
<code class="language-csharp">List<你的类型> newList = new List<你的类型>(oldList);</code>
ログイン後にコピー

このメソッドは、クローンリスト内のすべてのオブジェクトが元のリストのオブジェクトと完全に独立していることを保証します。 メソッド3:コピーコンストラクターを使用してクローニング

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<你的类型> oldList = new List<你的类型>();
List<你的类型> newList = new List<你的类型>(oldList.Count);

oldList.ForEach((item) =>
{
    newList.Add(new 你的类型(item));
});</code>
ログイン後にコピー
に類似した方法を使用して、必要なタイプの新しいインスタンスを返すことができます。

提案されているクローン方法は、利便性を向上させるために再利用可能な方法または拡張機能でカプセル化できます。

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

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