Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 2차원 배열을 순회하는 방법 완벽 정리

C#에서 2차원 배열의 모든 요소를 효율적으로 순회하려면 GetUpperBound 메서드와 중첩 for 루프를 활용하는 것이 가장 일반적인 방법입니다. 이 글에서는 단계별로 2차원 배열을 선언하고, 값을 설정한 뒤, 전체 요소를 출력하는 과정을 살펴보겠습니다.

1. 2차원 배열 선언하기

먼저 문자열 타입의 3x3 크기 2차원 배열을 다음과 같이 선언합니다.

string[] array = new string[3, 3];

2. 배열에 요소 값 설정하기

행과 열 인덱스를 지정하여 각 요소에 값을 할당할 수 있습니다.

array[0, 0] = "One";
array[0, 1] = "Two";
array[0, 2] = "Three";
array[1, 0] = "Four";
array[1, 1] = "Five";
array[1, 2] = "Six";
array[2, 0] = "Seven";
array[2, 1] = "Eight";
array[2, 2] = "Nine";

3. 상한(Upper Bound) 구하기

배열을 순회하려면 각 차원의 크기를 알아야 합니다. GetUpperBound() 메서드는 특정 차원의 마지막 인덱스를 반환하므로, 이를 활용하면 루프 범위를 정확하게 설정할 수 있습니다.

int uBound0 = array.GetUpperBound(0); // 첫 번째 차원의 최대 인덱스
int uBound1 = array.GetUpperBound(1); // 두 번째 차원의 최대 인덱스

4. 중첩 루프로 배열 순회하기

바깥쪽 for 루프가 행을, 안쪽 for 루프가 열을 담당하도록 중첩 루프를 작성하면 배열의 모든 요소에 순서대로 접근할 수 있습니다.

전체 예제 코드

using System;
using System.Collections.Generic;
using System.Linq;

public class Demo {
   public static void Main() {
      string[] array = new string[3, 3];
      array[0, 0] = "One";
      array[0, 1] = "Two";
      array[0, 2] = "Three";
      array[1, 0] = "Four";
      array[1, 1] = "Five";
      array[1, 2] = "Six";
      array[2, 0] = "Seven";
      array[2, 1] = "Eight";
      array[2, 2] = "Nine";

      // 각 차원의 상한 인덱스 가져오기
      int uBound0 = array.GetUpperBound(0);
      int uBound1 = array.GetUpperBound(1);

      // 중첩 루프를 사용해 배열 순회
      for (int i = 0; i <= uBound0; i++) {
         for (int j = 0; j <= uBound1; j++) {
            string res = array[i, j];
            Console.WriteLine(res);
         }
      }
      Console.ReadLine();
   }
}

실행 결과

One
Two
Three
Four
Five
Six
Seven
Eight
Nine

마무리

이처럼 GetUpperBound 메서드로 각 차원의 최대 인덱스를 구한 후 중첩 for 루프를 돌리면, 배열의 실제 크기와 무관하게 안전하게 2차원 배열 전체를 순회할 수 있습니다. 배열 크기가 하드코딩되지 않으므로 유지보수 측면에서도 유리하며, 다차원 배열을 다루는 다양한 상황에서 응용할 수 있는 기본 패턴입니다.