は組み込みのList<T>
メソッドを持っていないため、いくつかの戦略を調べます。
値タイプの浅いコピーClone()
、など)を含むリストの場合、単純な浅いコピーで十分です。 参照タイプのディープコピー:iclonable リストが参照タイプを保持し、ディープコピー(データの完全に独立したコピー)が必要な場合、およびそれらのタイプが
インターフェイスを実装する場合、このアプローチを使用できます。
int
参照タイプのディープコピー:コピーコンストラクターのレバレッジdouble
<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>
)またはコピーコンストラクターを利用することを強くお勧めします。これにより、より大きな制御が提供され、すべてのメンバー変数の完全なディープコピーが保証されます。 ロジックのカプセル化コード組織と再利用性を改善するには、これらの手法のいずれかを拡張メソッドまたは専用のヘルパー関数に包むことを検討してください。
以上がC#で一般的なリストをクローンする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。