1. Lorsque T dans l'objet List
Pour une Liste de types valeurs, vous pouvez la copier directement en utilisant la méthode suivante :
List<T> oldList = new List<T>(); oldList.Add(..); List<T> newList = new List<T>(oldList);
2. Lorsque T dans l'objet List
1. copié en utilisant la méthode ci-dessus. Seules les références aux objets de la liste seront copiées. Vous pouvez utiliser les méthodes d'extension suivantes pour copier :
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. Une autre façon de compléter. une copie complète de l'objet de référence se fait par sérialisation. C'est la méthode la plus fiable
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, Utiliser le système. 🎜>Le test est le suivant :
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); } }
L'article ci-dessus aborde brièvement le problème de copie profonde des objets List en C#. J'espère que c'est le cas. Je peux vous donner une référence. J'espère également que tout le monde soutiendra le site Web PHP chinois.
Pour plus d'articles sur le problème de copie profonde des objets List