Mais
Como faço para clonar uma lista genérica em C#?
Tenho uma lista genérica de objectos em C#, e desejo clonar a lista. Os itens dentro da lista são clonáveis, mas parece haver't uma opção para fazer list.Clone()
.
Há alguma forma fácil de contornar isto?
541
3
Se os seus elementos são tipos de valor, então você pode simplesmente fazer:
No entanto, se forem tipos de referência e você quiser uma cópia profunda (assumindo que seus elementos implementem apropriadamente `ICloneable'), você poderia fazer algo como isto:
Obviamente, substitua
ICloneable
nos genéricos acima e funda com qualquer tipo de elemento que implemente oICloneable
.Se o seu tipo de elemento não'não suporta
ICloneable
mas tem um copy-constructor, você poderia fazer isso em seu lugar:Pessoalmente, eu evitaria o
ICloneable
por causa da necessidade de garantir uma cópia profunda de todos os membros. Ao invés disso, I'd sugere o copy-constructor ou um método de fábrica comoYourType.CopyFrom(YourType itemToCopy)
que retorna uma nova instância deYourType
.Qualquer uma destas opções pode ser envolvida por um método (extensão ou não).
Para uma cópia rasa, você pode usar o método GetRange da classe da lista genérica.
Citado de: Receitas Genéricas
Se você só se preocupa com os tipos de valores...
E tu conheces o tipo:
Se você não'não sabe o tipo antes, você'vai precisar de uma função de ajuda:
O justo: