C#

[C#] 배열

Prooni 2024. 10. 7. 14:44

안녕하세요!

오늘은 C#의 배열에 대해 공부해요!

 

배열은 같은 성격의 데이터를 한번에 다룰때 필요해요.

인덱스를 톻해 각 요소에 접근할 수 있어요

 

그런데 배열의 인덱스는 0부터 시작하기 때문에

배열의 마지막 요소에 접근할때는 배열길이에서 1을 뺀 인덱스에 접근해야 한답니다!

 

이런 부분을 조금 쉽게 하기 위해

C# 8.0부터는 ^연산자가 생겼답니다.

 

^1은 마지막요소, ^2는 마지막에서 두번째에요!

 

자 다음으로는 유용하게 사용할 수 있는

"배열 분할하기"에 대해 알아 볼게요!

먼저, System.Range를 알아야하는데요

시작 인덱스와 마지막 인덱스를 이용해서 범위를 나타낸답니다.

 

..연산자를 통해서 객체를 생성하고

왼쪽에는 시작 인덱스, 오른쪽에는 마지막 인덱스가 와요!

참고로 시작 인덱스는 포함, 마지막 인덱스는 미포함입니다!!

 

class MainApp
{
    static void PrintArray(System.Array array)
    {
        foreach (var e in array)
        {
            Console.Write(e);
        }
        Console.WriteLine();
    }

    static void Main(string[] args)
    {
        char[] array = new char['Z' - 'A' + 1];
        for(int i = 0; i < array.Length; i++)
        {
            array[i] = (char)('A' + i);
        }

        PrintArray(array[..]);
        PrintArray(array[5..]);

        Range range_5_10 = 5..10;
        PrintArray(array[range_5_10]);

        Index last = ^0;
        Range range_5_last = 5..last;
        PrintArray(array[range_5_last]);

        PrintArray(array[^4..^1]);
    }
}

 

 

지금까지 1차원 배열만 다뤘는데요!

2차원 배열 사용법도 알아볼게요.

 

2차원 배열은 아래처럼 초기화하면 된답니다.

데이터_형식[,] 배열이름 = new 데이터_형식[2차원_길이, 1차원_길이];

 

만약 int[,] array = new int[2, 3];

이라는 코드가 있다면

이것은 길이 3짜리 1차원 배열을 2개 가지는 2차원 배열이에요!

 

예시코드 첨부할게요!

class MainApp
{
    static void Main(string[] args)
    {
        int[,] arr = new int[2, 3] { { 1, 2, 3 }, { 4,5,6} };

        for(int i = 0; i < arr.GetLength(0); i++)
        {
            for(int j = 0; j < arr.GetLength(1); j++)
            {
                Console.Write($"[{i}, {j}] : {arr[i, j]}");
            }
            Console.WriteLine();
        }
        Console.WriteLine();

      
        int[,] arr2 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
      
        for(int i = 0; i < arr2.GetLength(0); i++)
        {
            for(int j = 0; j < arr2.GetLength(1); j++)
            {
                Console.Write($"[{i}, {j}] : {arr2[i, j]}");
            }
            Console.WriteLine();
        }
        Console.WriteLine();


        int[,] arr3 = { { 1, 2, 3 }, { 4, 5, 6 } };
        for (int i = 0; i < arr3.GetLength(0); i++)
        {
            for (int j = 0; j < arr3.GetLength(1); j++)
            {
                Console.Write($"[{i}, {j}] : {arr3[i, j]}");
            }
            Console.WriteLine();
        }
        Console.WriteLine();
    }
}

 

이제 가변 배열에 대해 알아볼거에요.

가변배열은 다양한 길이의 1차원 배열을 여러개 가질 수 있는 배열이랍니다!

 

가변배열은 아래 형식으로 초기화할 수 있어요.

데이터_형식[][] 배열_이름 = new 데이터_형식[가변_배열의_용량][];

 

예시코드 첨부할게요.

class MainApp
{
    static void Main(string[] args)
    {
        int[][] jagged = new int[3][];
        jagged[0] = new int[5] { 1, 2, 3, 4, 5 };
        jagged[1] = new int[] { 1, 2, 3 };
        jagged[2] = new int[] { 100, 200 };

        foreach (int[] arr in jagged)
        {
            Console.Write($"Length : {arr.Length}, ");
            foreach(int e in arr)
            {
                Console.Write($"{e} ");
            }
            Console.WriteLine("");
        }
        Console.WriteLine("");

        int[][] jagged2 = new int[2][]
        {
            new int[] { 1000, 2000},
            new int[] {6,7,8,9 }
        };

        foreach (int[] arr in jagged2)
        {
            foreach(int e in arr)
            {
                Console.Write($"{e} ");
            }
            Console.WriteLine("");
        }
        Console.WriteLine("");
    }
}

 

 

 

'C#' 카테고리의 다른 글

[C#] 인덱서  (0) 2024.10.07
[C#] 컬렉션  (0) 2024.10.07
[C#] 프로퍼티  (1) 2024.10.06
[C#] 얕은 복사와 깊은 복사 - 설명 및 예제 코드  (0) 2024.10.05
[C#] ref out 키워드 의미 및 예시 코드  (4) 2024.10.03