English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 배열(Array)

변수는 문자面上的 값을 저장하는 데 사용되며, 배열은 여러 문자面上的 값을 저장하는 데 사용됩니다.

배열은 동일한 데이터 타입의 고정된 수의 텍스트 값(요소)을 저장하는 데이터 구조입니다. 배열 요소는 메모리에서 연속적으로 저장됩니다.

C#에서 배열은 일维 배열, 다维 배열 및 점프 배열 세 가지 유형으로 나뉩니다. 여기서는 일维 배열에 대해 배울 것입니다.

아래 그림은 배열 표현 형식을 설명합니다.

배열 표현

배열 선언 및 초기화

배열의 요소 타입을 지정하기 위해 괄호를 사용하여 배열을 선언할 수 있습니다.

int[] evenNums;  // 정수 배열
string[] cities; // 문자열 배열

다음 문장은 단일 문장에서 선언하고 배열에 값을 추가합니다.

int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; 
string[] cities = new string[3]{ "Mumbai", "London", "New York" };

위에서 evenNums 배열은 최대로 다섯 개의 정수를 저장할 수 있습니다. new int[5] 괄호 내의 숫자 5 은 배열의 크기를 지정합니다. 마찬가지로 cities 배열의 크기는3배열 요소는 콤마로 구분된 목록으로 대括호 {}에 추가됩니다.

배열 타입 변수는 괄호 [] 없이 var로 선언할 수 있습니다.

var evenNums = new int[]{ 2, 4, 6, 8, 10}; 
var cities = new string[]{ "Mumbai", "London", "New York" };

배열 요소를 추가할 때 size는 선택사항입니다. 컴파일러는 괄호 내의 요소 수에 따라 크기를 추론합니다.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }

다음 예제에서 무효한 배열 선언을 보여줍니다.

//크기를 지정해야 합니다 
int[] evenNums = new int[]; 
//요소 수는 지정된 크기와 일치해야 합니다 
int[] evenNums = new int[5] { 2, 4 };
//var와 배열 초기화 프로그램을 함께 사용할 수 없습니다
var evenNums = { 2, 4, 6, 8, 10};

지연 초기화

배열을 단일 문장에서 선언하고 초기화할 필요가 없습니다. 먼저 배열을 선언한 후 new 연산자를 사용하여 초기화할 수 있습니다.

int[] evenNums;
evenNums = new int[5];
// 또는
evenNums = new int[]{ 2, 4, 6, 8, 10 };

배열 요소에 접근

인덱스를 사용하여 배열 요소에 접근할 수 있습니다. 인덱스는 각 배열 요소와 연결된 숫자로, 인덱스 0에서 배열 크기까지입니다-1 끝.

다음 예제에서 인덱스를 사용하여 추가/업데이트 및 배열 요소 검색.

int[] evenNums = new int[5];
evenNums[0] = 2;
evenNums[1] = 4;
//evenNums[6] = 12;  //발생시키는 시간 내부 예외 IndexOutOfRange
Console.WriteLine(evenNums[0]);  //출력 2
Console.WriteLine(evenNums[1]);  //출력 4

주의하세요, 배열의 지정된 크기를 초과하여 요소를 추가하려고 할 때는 IndexOutOfRangeException 예외가 발생합니다.

for 루프로 배열에 접근

for 루프를 사용하여 배열 요소에 접근합니다. for 루프의 조건 표현式中 배열의 length 속성을 사용합니다.

int[] evenNums = { 2, 4, 6, 8, 10 };
for(int i = 0; i < evenNums.Length; i++){
    Console.WriteLine(evenNums[i]);  
}
for(int i = 0; i < evenNums.Length; i++){
    evenNums[i] = evenNums[i] + 10;  // 각 요소의 값을 업데이트10
}

foreach 루프로 배열에 접근

foreach 루프를 사용하여 배열 요소의 값을 인덱스 없이 읽을 수 있습니다.

int[] evenNums = { 2, 4, 6, 8, 10}; 
string[] cities = { "Mumbai", "London", "New York" }; 
foreach(var item in evenNums){
    Console.WriteLine(item);   
}
foreach(var city in cities){
    Console.WriteLine(city);
}

LINQ 메서드

C#의 모든 배열은 System.Array抽象 기본 클래스에서 파생됩니다.

Array 클래스는 IEnumerable 인터페이스를 구현했으므로 Max(), Min(), Sum(), reverse() 등과 같은 LINQ 확장 메서드를 사용할 수 있습니다.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
nums.Max(); // 반환16
nums.Min(); // 반환6
nums.Sum(); // 반환55
nums.Average(); // 반환55

System.Array 클래스는 배열을 생성,操作, 검색 및 정렬하는 메서드를 포함하고 있습니다.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
Array.Sort(nums); // 배열을 정렬 
Array.Reverse(nums); // 배열을 내림차순으로 정렬
Array.ForEach(nums, n => Console.WriteLine(n)); // 배열을 반복
Array.BinarySearch(nums, 5);// 이진 검색

배열을 매개변수로 전달

배열을 메서드 매개변수로 전달할 수 있습니다. 배열은 참조형 타입이므로 이 메서드는 배열 요소의 값을 변경할 수 있습니다.

public static void Main(){
    int[] nums = { 1, 2, 3, 4, 5 };
    UpdateArray(nums); 
    foreach(var item in nums)
        Console.WriteLine(item);   
}
                    
public static void UpdateArray(int[] arr)
{
    for(int i = 0; i < arr.Length;++)
        arr[i] = arr[i] + 10;   
}

다음을 알아보세요 다차원 아레이사이드 아레이