Copiare una lista in C#

Muhammad Maisam Abbas 16 febbraio 2024
  1. Copiare una lista con Linq in C#
  2. Copiare una lista con il costruttore di liste in C#
Copiare una lista in C#

Questo tutorial introdurrà metodi per copiare una lista in C#.

Copiare una lista con Linq in C#

Linq può eseguire query di tipo SQL su strutture dati in C#. Possiamo usare Linq con il metodo predefinito item.Clone(/) per creare una copia di una lista. Vedi l’esempio sotto.

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);
      }
    }
  }
}

Produzione:

ABC DEF GHI

Abbiamo creato la funzione di estensione Clone() da utilizzare con una lista generico. La funzione Clone() usa la funzione item.Clone() per fare una copia separata di ogni elemento all’interno della lista e poi restituisce il risultato sotto forma di una lista con la funzione ToList() in C#. Nella funzione principale, abbiamo inizializzato la di stringhe slist e lo abbiamo clonato in un’altra lista di stringhe tlist. Possiamo usare questo approccio sia con elenchi di valori che con liste di riferimenti.

Copiare una lista con il costruttore di liste in C#

Un altro metodo più semplice per creare una copia di una lista è usare il costruttore di liste in C#. Possiamo passare la lista precedente al costruttore della nuova lista per creare una copia della lista precedente. Il seguente esempio di codice ci mostra come creare una copia separata di una lista con il costruttore di liste in 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);
      }
    }
  }
}

Produzione:

ABC DEF GHI

Questo codice è molto più semplice e più facile da capire rispetto all’approccio precedente. Nel codice precedente, abbiamo creato una copia separata della lista slist in tlist passando slist come argomento del costruttore di tlist. Possiamo usare questo approccio solo con la lista di valori.

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

Articolo correlato - Csharp List