C# - 2차원 배열 복사, Clone

2차원 배열을 복사하는 방법을 소개합니다.

1. Clone()을 이용한 방법

array.Clone() 함수로 2차원 배열을 복사할 수 있습니다.

아래와 같이 2차 배열을 복사하고, 올바르게 복사되었는지 내용을 출력해볼 수 있습니다.

  • array.GetLength(0) : 2차 배열에서 행(row)의 길이를 리턴
  • array.GetLength(1) : 2차 배열에서 열(column)의 길이를 리턴
using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[,] arr = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
            };

            // copy
            int[,] copy = (int[,]) arr.Clone();

            // print out
            for (int i = 0; i < copy.GetLength(0); i++) {
                for (int j = 0; j < copy.GetLength(1); j++) {
                    Console.Write(copy[i, j] + " ");
                }
                Console.WriteLine();
            }
        }
    }
}

Output:

1 2 3
4 5 6
7 8 9

2. for문을 이용한 방법

동일한 크기의 2차 배열을 생성한 후, 반복문을 이용하여 복사할 수 있습니다.

아래 예제에서 첫번째 for loop는 복사하는 부분이고, 두번째 for loop는 내용을 터미널에 출력하는 부분입니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[,] arr = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
            };

            // copy
            int[,] copy = new int[arr.GetLength(0), arr.GetLength(1)];
            for (int i = 0; i < copy.GetLength(0); i++) {
                for (int j = 0; j < copy.GetLength(1); j++) {
                    copy[i, j] = arr[i, j];
                }
            }

            // print out
            for (int i = 0; i < copy.GetLength(0); i++) {
                for (int j = 0; j < copy.GetLength(1); j++) {
                    Console.Write(copy[i, j] + " ");
                }
                Console.WriteLine();
            }
        }
    }
}

Output:

1 2 3
4 5 6
7 8 9
Loading script...
codechachaCopyright ©2019 codechacha