Maison > développement back-end > Tutoriel C#.Net > Une brève discussion sur le problème de copie approfondie des objets List en C#

Une brève discussion sur le problème de copie approfondie des objets List en C#

高洛峰
Libérer: 2017-01-19 13:09:48
original
1484 Les gens l'ont consulté

1. Lorsque T dans l'objet List est un type valeur (type int, etc.)

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);
Copier après la connexion

2. Lorsque T dans l'objet List est un type de référence (comme une classe d'entité personnalisée)

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接口
 }
Copier après la connexion

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);
   }
}
Copier après la connexion

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);
      }
}
Copier après la connexion

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 en C#, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal