C#에서 Array 클래스는 모든 배열의 기본(base) 클래스로, System 네임스페이스에 정의되어 있습니다. 이 클래스가 제공하는 메서드와 속성을 활용하면 배열 복사, 검색, 정렬 방향 변경 등 다양한 작업을 손쉽게 처리할 수 있습니다.
Array 클래스의 주요 메서드
다음은 C# Array 클래스에서 자주 사용되는 메서드 목록입니다.
| 번호 | 메서드 및 설명 |
|---|---|
| 1 | Clear 요소의 형식에 따라 배열 내 지정된 범위의 요소를 0, false 또는 null로 설정합니다. |
| 2 | Copy(Array, Array, Int32) 첫 번째 요소부터 시작하는 원본 배열의 일부 요소를 다른 배열의 첫 번째 요소 위치부터 복사합니다. 복사할 길이는 32비트 정수로 지정합니다. |
| 3 | CopyTo(Array, Int32) 현재 1차원 배열의 모든 요소를 지정된 대상 배열 인덱스부터 시작하는 위치로 복사합니다. 인덱스는 32비트 정수로 지정합니다. |
| 4 | GetLength 배열의 지정된 차원에 포함된 요소 수를 32비트 정수로 반환합니다. |
| 5 | GetLongLength 배열의 지정된 차원에 포함된 요소 수를 64비트 정수로 반환합니다. |
| 6 | GetLowerBound 배열에서 지정된 차원의 하한 인덱스를 가져옵니다. |
| 7 | GetType 현재 인스턴스의 Type을 반환합니다. (Object 클래스에서 상속) |
| 8 | GetUpperBound 배열에서 지정된 차원의 상한 인덱스를 가져옵니다. |
| 9 | GetValue(Int32) 1차원 배열에서 지정된 위치의 값을 가져옵니다. 인덱스는 32비트 정수로 지정합니다. |
| 10 | IndexOf(Array, Object) 지정된 개체를 검색하여 전체 1차원 배열에서 처음 발견된 인덱스를 반환합니다. |
| 11 | Reverse(Array) 전체 1차원 배열의 요소 순서를 반대로 뒤집습니다. |
Array 클래스의 주요 속성
다음은 C# Array 클래스에서 제공하는 대표적인 속성입니다.
| 번호 | 속성 및 설명 |
|---|---|
| 1 | IsFixedSize 배열의 크기가 고정되어 있는지 여부를 나타내는 값을 반환합니다. |
| 2 | IsReadOnly 배열이 읽기 전용인지 여부를 나타내는 값을 반환합니다. |
| 3 | Length 배열의 모든 차원에 포함된 전체 요소 수를 32비트 정수로 반환합니다. |
| 4 | LongLength 배열의 모든 차원에 포함된 전체 요소 수를 64비트 정수로 반환합니다. |
| 5 | Rank 배열의 차원 수(rank)를 반환합니다. |
실전 예제: Reverse 메서드로 회문(Palindrome) 판별하기
Array.Reverse 메서드를 활용하면 문자 배열의 순서를 뒤집을 수 있습니다. 이를 이용해 문자열이 회문(Palindrome), 즉 거꾸로 읽어도 같은 문자열인지 확인해 보겠습니다.
아래 예제에서는 문자열 "Level"을 사용합니다. 이 단어는 뒤집어도 동일한 결과가 나오므로 회문으로 판별됩니다.
예제 코드
using System;
namespace Demo {
class Program {
static void Main(string[] args) {
string string1, rev;
string1 = "Level";
char[] ch = string1.ToCharArray();
// 배열 요소의 순서를 반대로 뒤집음
Array.Reverse(ch);
rev = new string(ch);
// 대소문자를 구분하지 않고 원래 문자열과 비교
bool b = string1.Equals(rev, StringComparison.OrdinalIgnoreCase);
if (b == true) {
Console.WriteLine("String " + string1 + " is a Palindrome!");
} else {
Console.WriteLine("String " + string1 + " is not a Palindrome!");
}
Console.Read();
}
}
}코드 실행 흐름
1단계: ToCharArray() 메서드로 문자열 "Level"을 문자 배열로 변환합니다.
2단계: Array.Reverse() 메서드로 배열의 요소 순서를 뒤집습니다.
3단계: 뒤집힌 배열을 다시 문자열로 만들어 원래 문자열과 비교합니다.
4단계: StringComparison.OrdinalIgnoreCase 옵션으로 대소문자 차이를 무시하고 비교하므로 "Level"과 "leveL"은 같은 것으로 판정됩니다.
실행 결과는 다음과 같습니다.
String Level is a Palindrome!
이처럼 Array 클래스의 메서드를 잘 활용하면 복잡한 로직도 간결하게 구현할 수 있습니다.