Copier une liste en C#

Muhammad Maisam Abbas 16 février 2024
  1. Copier une liste avec Linq en C#
  2. Copier une liste avec le constructeur de liste en C#
Copier une liste en C#

Ce didacticiel présentera des méthodes pour copier une liste en C#.

Copier une liste avec Linq en C#

Le Linq peut effectuer des requêtes de type SQL sur des structures de données en C#. Nous pouvons utiliser Linq avec la méthode item.Clone(/) prédéfinie pour créer une copie d’une liste. Voir l’exemple ci-dessous.

using System;
using System.Collections.Generic;
using System.Linq;

namespace copy_a_list {
  static class Extensions {
    public static List<T> Clone<T>(this List<T> listToClone)
        where T : ICloneable {
      return listToClone.Select(item => (T)item.Clone()).ToList();
    }
  }
  class Program {
    static void Main(string[] args) {
      List<string> slist = new List<string> { "ABC", "DEF", "GHI" };
      List<string> tlist = slist.Clone();
      foreach (var t in tlist) {
        Console.WriteLine(t);
      }
    }
  }
}

Production:

ABC DEF GHI

Nous avons créé la fonction d’extension Clone() à utiliser avec une liste générique. La fonction Clone() utilise la fonction item.Clone() pour faire une copie séparée de chaque élément à l’intérieur de la liste puis retourne le résultat sous forme de liste avec la fonction ToList() en C#. Dans la fonction principale, nous avons initialisé la liste de chaînes slist et l’avons clonée dans une autre liste de chaînes tlist. Nous pouvons utiliser cette approche avec à la fois une liste de valeurs et une liste de références.

Copier une liste avec le constructeur de liste en C#

Une autre méthode plus simple pour créer une copie d’une liste consiste à utiliser le constructeur de liste en C#. Nous pouvons passer la liste précédente au constructeur de la nouvelle liste pour créer une copie de la liste précédente. L’exemple de code suivant nous montre comment créer une copie distincte d’une liste avec le constructeur de liste en C#.

using System;
using System.Collections.Generic;
using System.Linq;

namespace copy_a_list {
  class Program {
    static void method2() {}
    static void Main(string[] args) {
      List<string> slist = new List<string> { "ABC", "DEF", "GHI" };
      List<string> tlist = new List<string>(slist);
      foreach (var t in tlist) {
        Console.WriteLine(t);
      }
    }
  }
}

Production:

ABC DEF GHI

Ce code est beaucoup plus simple et plus facile à comprendre que l’approche précédente. Dans le code ci-dessus, nous avons créé une copie séparée de la liste slist dans la tlist en passant slist comme argument du constructeur de tlist. Nous ne pouvons utiliser cette approche qu’avec la liste de valeurs.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp List