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

C# 배열 클래스의 GetValue() 메서드 사용법 완벽 가이드

C#의 Array 클래스가 제공하는 GetValue() 메서드는 배열에서 지정된 위치에 저장된 값을 가져오는 데 사용됩니다. 인덱스는 32비트 정수(int) 형태로 지정하며, 1차원 배열뿐 아니라 2차원 이상의 다차원 배열에서도 활용할 수 있습니다. 반대로 배열에 값을 저장할 때는 SetValue() 메서드를 사용합니다.

1. Array.CreateInstance로 배열 생성 및 값 설정

먼저 Array.CreateInstance 메서드를 사용해 배열을 동적으로 생성합니다. 아래 예제에서는 문자열 타입의 3×6 크기 2차원 배열을 만들고, SetValue() 메서드로 각 위치에 값을 저장했습니다.

Array arr = Array.CreateInstance(typeof(String), 3, 6);
arr.SetValue("One", 0, 0);
arr.SetValue("Two", 0, 1);
arr.SetValue("Three", 0, 2);
arr.SetValue("Four", 0, 3);
arr.SetValue("Five", 1, 4);
arr.SetValue("Six", 1, 5);
arr.SetValue("Seven", 1, 2);
arr.SetValue("Eight", 1, 3);

2. 반복문과 GetValue()로 배열 값 출력하기

배열의 각 차원 길이는 GetLength() 메서드로 구할 수 있습니다. 이 길이를 이용해 중첩 반복문을 수행하면서 GetValue() 메서드로 모든 요소의 값을 순서대로 화면에 출력합니다.

for (int i = 0; i < a; i++)
    for (int j = 0; j < b; j++)
        Console.WriteLine(arr.GetValue(i, j));

전체 예제 코드

지금까지의 내용을 하나의 완전한 프로그램으로 정리하면 다음과 같습니다.

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

namespace Demo {
    class Program {
        static void Main(string[] args) {
            // 2차원 배열 생성
            Array arr = Array.CreateInstance(typeof(String), 3, 6);

            // SetValue()로 값 저장
            arr.SetValue("One", 0, 0);
            arr.SetValue("Two", 0, 1);
            arr.SetValue("Three", 0, 2);
            arr.SetValue("Four", 0, 3);
            arr.SetValue("Five", 1, 4);
            arr.SetValue("Six", 1, 5);
            arr.SetValue("Seven", 1, 2);
            arr.SetValue("Eight", 1, 3);

            // 각 차원의 길이 가져오기
            int a = arr.GetLength(0);
            int b = arr.GetLength(1);

            // GetValue()로 값 읽기
            for (int i = 0; i < a; i++)
                for (int j = 0; j < b; j++)
                    Console.WriteLine(arr.GetValue(i, j));

            Console.ReadLine();
        }
    }
}

실행 결과

프로그램을 실행하면 설정된 순서대로 배열의 값이 출력됩니다. 값이 지정되지 않은 인덱스 위치는 빈 문자열로 표시됩니다.

One
Two
Three
Four

Seven
Eight
Five
Six

정리

GetValue() 메서드는 다양한 오버로드를 제공합니다. 1차원 배열에서는 GetValue(int index)를, 2차원 배열에서는 GetValue(int index1, int index2)를 사용할 수 있으며, params int[] indices 형태의 오버로드를 이용하면 3차원 이상의 다차원 배열 값도 손쉽게 읽을 수 있습니다. Array.CreateInstance로 동적 배열을 생성한 경우에는 일반 배열 문법(arr[i, j]) 대신 GetValue()SetValue()를 사용하는 것이 표준적인 접근 방식입니다.