1. List8742468051c85b06f0a0af9e3e506b5c オブジェクトの T が値型 (int 型など) の場合、次のメソッドで直接コピーできます。 List8742468051c85b06f0a0af9e3e506b5c T が参照型 (カスタム エンティティ クラスなど) の場合
1. 上記のメソッドを使用してコピーできるのは、List 内のオブジェクトへの参照のみです。次の拡張メソッドを使用してコピーします。
List<T> oldList = new List<T>(); oldList.Add(..); List<T> newList = new List<T>(oldList);2. シリアル化を使用して参照オブジェクトのディープ コピーを完了する別の方法は、最も信頼性の高い方法です。
static class Extensions { public static IList<T> Clone<T>(this IList<T> listToClone) where T: ICloneable { return listToClone.Select(item => (T)item.Clone()).ToList(); } //当然前题是List中的对象要实现ICloneable接口 }
3. ディープ システムをテストします。上記のオブジェクトのコピー
テストは次のとおりです:
public static T Clone<T>(T RealObject) { using (Stream objectStream = new MemoryStream()) { //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制 IFormatter formatter = new BinaryFormatter(); formatter.Serialize(objectStream, RealObject); objectStream.Seek(0, SeekOrigin.Begin); return (T)formatter.Deserialize(objectStream); } }
上記の記事では、C# の List オブジェクトのディープ コピーの問題について簡単に説明していますが、エディターによって共有されるすべての内容です。参考になれば幸いです。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。
C# の List8742468051c85b06f0a0af9e3e506b5c オブジェクトのディープ コピーの問題に関するその他の記事については、PHP 中国語 Web サイトに注目してください。