Как скопировать массив?

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] FIRST = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int[] SECON = FIRST;
            SECON[0] = 10;
            Console.WriteLine(FIRST[0]); // Выводится 10
            for (;Console.ReadKey().Key != ConsoleKey.Escape;);
        }
    }
}

Я пытался сделать все примерно так, но получается что-то вроде ссылки на первый массив, а мне нужна копия, изменение которой никак не повлияет на изначальный массив.


Ответы (2 шт):

Автор решения: Kirill Warp

Можно воспользоваться методом копирования Array.Copy

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] FIRST = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            int[] SECOND = new int[FIRST.GetUpperBound(0) - 1];

            Array.Copy(FIRST, SECOND, FIRST.GetUpperBound(0) - 1);

            SECOND[0] = 10;

            Console.WriteLine(FIRST[0]); // Выводится 0

            for (;Console.ReadKey().Key != ConsoleKey.Escape;);
        }
    }
}
→ Ссылка
Автор решения: Anonim Anonim
        int[] FIRST = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        int[] SECON = new List<int>(FIRST.AsEnumerable()).ToArray();
        SECON[0] = 10;
        Console.WriteLine(new string('-', 40));
        Console.WriteLine(FIRST[0]);
        Console.WriteLine(new string('-', 40));
        Console.ReadKey();
→ Ссылка