C#에서 배열에 포함된 전체 요소 수를 확인해야 하는 경우가 자주 있습니다. 이때 GetLength() 메서드를 사용하면 간단하게 배열의 길이를 구할 수 있습니다. 아래 예제를 통해 실제 사용 방법을 살펴보겠습니다.
예제 1: 문자열 배열의 요소 수 확인
다음 코드는 여러 개의 상품 이름이 담긴 문자열 배열을 선언하고, GetLength(0)으로 배열의 총 요소 수를 출력한 뒤, Array.Exists() 메서드로 특정 문자로 시작하는 요소가 있는지도 함께 확인합니다.
using System;
public class Demo {
public static void Main() {
string[] products = { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };
Console.WriteLine("상품 목록...");
foreach(string s in products) {
Console.WriteLine(s);
}
Console.WriteLine("배열 길이 = "+products.GetLength(0));
Console.WriteLine("\n'C'로 시작하는 상품이 하나 이상 있습니까? = {0}", Array.Exists(products, ele => ele.StartsWith("C")));
Console.WriteLine("'D'로 시작하는 상품이 하나 이상 있습니까? = {0}", Array.Exists(products, ele => ele.StartsWith("D")));
Console.WriteLine("'T'로 시작하는 상품이 하나 이상 있습니까? = {0}", Array.Exists(products, ele => ele.StartsWith("T")));
Console.WriteLine("'E'로 시작하는 상품이 하나 이상 있습니까? = {0}", Array.Exists(products, ele => ele.StartsWith("E")));
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
상품 목록... Electronics Accessories Clothing Toys Clothing Furniture 배열 길이 = 6 'C'로 시작하는 상품이 하나 이상 있습니까? = True 'D'로 시작하는 상품이 하나 이상 있습니까? = False 'T'로 시작하는 상품이 하나 이상 있습니까? = True 'E'로 시작하는 상품이 하나 이상 있습니까? = True
코드 설명
- GetLength(0): 첫 번째 차원(0차원)의 요소 수를 반환합니다. 1차원 배열에서는
Length속성과 동일한 값을 반환하지만, 다차원 배열에서는 차원별 길이를 구할 때 유용합니다. - Array.Exists(): 조건자(predicate)를 만족하는 요소가 배열에 하나라도 존재하면
true를, 없으면false를 반환합니다.
예제 2: 빈 배열의 요소 수 및 배열 속성 확인
이번에는 요소가 없는 빈 배열을 선언하고, 배열의 길이와 함께 IsFixedSize, IsReadOnly 속성도 확인해 보겠습니다.
using System;
public class Demo {
public static void Main() {
string[] products = new string[] { };
Console.WriteLine("배열 길이 = "+products.GetLength(0));
Console.WriteLine("배열 크기가 고정되어 있습니까? = " + products.IsFixedSize);
Console.WriteLine("배열이 읽기 전용입니까? = " + products.IsReadOnly);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
배열 길이 = 0 배열 크기가 고정되어 있습니까? = True 배열이 읽기 전용입니까? = False
핵심 정리
- C#의 배열은 생성 시점에 크기가 결정되므로
IsFixedSize는 항상true입니다. - 일반 배열은 기본적으로 수정 가능하므로
IsReadOnly는false를 반환합니다. - 요소가 없는 빈 배열이라도
GetLength(0)은 오류 없이0을 반환합니다.