.NET 4.x Копирование обобщенных коллекци - C#

Узнай цену своей работы

Формулировка задачи:

Как правильно копировать обобщенные коллекции ? Например:
    class SimpleClass
    {
        public int Number;
 
        public SimpleClass(int number)
        {
            Number = number;
        }
    }
//*************************
List<SimpleClass> a = new List<SimpleClass>();
            for (int i = 0; i < 10; i++)
                a.Add(new SimpleClass(i));
 
            List<SimpleClass> b = new List<SimpleClass>(a);
 
            b[0].Number = -10;
В данном случае у коллекции "a" 0-ой элемент тоже будет -10. А как скопировать коллекцию так что бы изменение "b" не влияло на "а" ?

Решение задачи: «.NET 4.x Копирование обобщенных коллекци»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication4 {
    class Program {
        static void Main(string[] args) {
            List<Test> listA = new List<Test>();
            listA.AddRange(Enumerable.Range(0, 10).Select(item => new Test(item)).ToArray());
 
            List<Test> listB = new List<Test>(listA.Select(item => (Test)item.Clone()));
            Console.WriteLine(listA[0].Number);
            Console.WriteLine(listB[0].Number);
 
            listB[0].Number = 10;
 
            Console.WriteLine(listA[0].Number);
            Console.WriteLine(listB[0].Number);
            Console.ReadLine();
        }
    }
    class Test :ICloneable {
        public int Number;
        public Test(int num) {
            Number = num;
        }
 
        public object Clone() {
            return new Test(this.Number);
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы