Copie uma lista em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Copie uma lista com Linq em C#
  2. Copie uma lista com o construtor de lista em C#
Copie uma lista em C#

Este tutorial apresentará métodos para copiar uma lista em C#.

Copie uma lista com Linq em C#

O Linq pode realizar consultas semelhantes a SQL em estruturas de dados em C#. Podemos usar o Linq com o método predefinido item.Clone(/) para criar uma cópia de uma lista. Veja o exemplo abaixo.

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

Resultado:

ABC DEF GHI

Criamos a função de extensão Clone() para ser usada com uma lista genérica. A função Clone() usa a função item.Clone() para fazer uma cópia separada de cada elemento dentro da lista e então retorna o resultado na forma de uma lista com a função ToList() em C#. Na função principal, inicializamos a lista de strings slist e a clonamos em outra lista de strings tlist. Podemos usar essa abordagem com lista de valores e lista de referências.

Copie uma lista com o construtor de lista em C#

Outro método mais simples de criar uma cópia de uma lista é usar o construtor de lista em C#. Podemos passar a lista anterior para o construtor da nova lista para criar uma cópia da lista anterior. O exemplo de código a seguir nos mostra como criar uma cópia separada de uma lista com o construtor de lista em 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);
      }
    }
  }
}

Resultado:

ABC DEF GHI

Este código é muito mais simples e fácil de entender do que a abordagem anterior. No código acima, criamos uma cópia separada da lista slist na tlist passando slist como o argumento do construtor de tlist. Só podemos usar essa abordagem com a lista de valores.

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

Artigo relacionado - Csharp List