1. List
값 유형 목록의 경우 다음 방법을 사용하여 직접 복사할 수 있습니다.
List<T> oldList = new List<T>(); oldList.Add(..); List<T> newList = new List<T>(oldList);
2. List
1. 위의 방법만 List에 있는 개체의 참조를 복사하려면 다음 확장 방법을 사용하여 복사할 수 있습니다.
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接口 }
2. 또 다른 방법은 직렬화를 사용하여 개체를 완성하는 것입니다. 이 방법이 가장 안정적입니다.
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); } }
3. System.Test 사용
테스트는 다음과 같습니다.
public static T Clone<T>(T RealObject) { using(Stream stream=new MemoryStream()) { XmlSerializer serializer = new XmlSerializer(typeof(T)); serializer.Serialize(stream, RealObject); stream.Seek(0, SeekOrigin.Begin); return (T)serializer.Deserialize(stream); } }
위 글은 C#에서 List 객체의 Deep Copy 문제에 대해 간략하게 논의한 내용이며 모두 편집자가 공유한 내용이므로 참고하실 수 있도록, PHP 중국어도 지원해 주시길 바랍니다. 웹사이트.
C#의 List