C# 강좌 : 제 16강 - 배열

C# Using Array

C# 강좌 : 제 16강 - 배열
[ C# ] - 윤대희

배열(Array)


배열(Array)이란 동일한 특성을 가지며 일정한 규칙에 따라 몇몇 요소가 나열된 데이터 집합입니다.

배열의 번호(index)번호에 대응하는 데이터들로 이루어진 자료 구조를 의미합니다.

배열을 선언함으로써 다수의 데이터를 효율적으로 처리할 수 있습니다.

C#에서 배열은 다음과 같이 선언할 수 있습니다.

데이터형식[ ] 배열이름 = new 데이터형식[ 크기 ];


int[] array = new int[5];


int[] array = new int[5] {1, 2, 3, 4, 5};


int[] array = new int[5];
array[0] = 1;
array[1] = 2;
array[2] = 3;
array[3] = 4;
array[4] = 5;


  • Tip : 크기를 지정하지 않으면 배열을 선언할 수 없습니다.



1 차원 배열(One Dimesion)


1 차원 배열은 다음과 같이 표현 할 수 있습니다.


1


index는 1이 아닌 0부터 시작하게 됩니다.

배열의 크기가 5라면 index0 ~ 4 까지 입니다.


int[] one_dimension = new int[5] { 1, 2, 3, 4, 5 };

for (int i = 0; i < one_dimension.Length; i++)
{
    Console.Write(one_dimension[i]);
}

실제 출력 값 : 12345

배열의 크기는 배열이름.Length를 이용하여 알 수 있습니다.



2 차원 배열(Two Dimesion)


2 차원 배열은 다음과 같이 표현 할 수 있습니다.


2


index0, 0 에서 n-1, m-1 까지 입니다.


int[] one_dimension = new int[5] { 1, 2, 3, 4, 5 };

int[,] two_dimension = new int[3, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 } };

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

실제 출력 값 : 123 / 456

배열의 크기는 배열이름.GetLength(차원)를 이용하여 알 수 있습니다.

배열이름.GetLength(0)n 방향, 배열이름.GetLength(1)m 방향 입니다.


  • Tip : 배열이름.Length 을 이용하면 n * m의 크기로 판단합니다.

  • Tip : 2 차원 이상의 경우 ,을 추가함으로써 사용할 수 있습니다.



가변 배열(Adjustable Array)


가변 배열 (Adjustable Array)은 배열을 요소로 갖는 배열입니다.

첨자 하나만을 사용해서 1차원 배열에 접근하는 일은 불가능합니다.

가변 배열은 배열을 요소로써 접근합니다. C#에서 가변 배열은 다음과 같이 선언할 수 있습니다.

데이터형식[ ][ ] 배열이름 = new 데이터형식[가변배열의 크기][ ];


int[][] Adjustable = new int[3][];

Adjustable[0] = new int[5] { 1, 2, 3, 4, 5 };
Adjustable[1] = new int[] { 6, 7, 8};
Adjustable[2] = new int[] { 9, 10};

Console.Write(Adjustable[0][2]);

실제 출력 값 : 3


int[][] Adjustable = new int[2][] { new int[] { 1, 2, 3, 4, 5 }, 
                                    new int[4] { 6, 7, 8, 9 } };

Console.Write(Adjustable[1][2]);

실제 출력 값 : 8


  • Tip : 배열이름[n].GetLength(m) 을 이용하면 가변 배열안에 있는 배열의 크기를 판단할 수 있습니다.
  • Tip : 배열이름.GetLength(n) 을 이용하면 가변 배열의 크기를 판단 할 수 있습니다.



목록(List)


목록(List)배열(Array)과 비슷한 역할을 하지만, 약간의 차이점을 지니고 있습니다.

일반적인 배열은 크기를 미리 선언해 사용하지만, 목록은 동적으로 크기 조절이 가능합니다.

또한, 순차적으로 데이터를 넣어야하는 형태(0, 1, 2, 3 … n - 1)이므로 색인값을 지정하지 않아도 됩니다.

C#에서 목록은 다음과 같이 선언할 수 있습니다.

List<데이터형식> 목록이름 = new List<데이터형식>()


List<int> list = new List<int>();

for (int i = 0; i < 10; i++)
{
    list.Add(i + 100);
}

Console.WriteLine(list[3]);

실제 출력 값 : 103


값을 목록에 추가할 때는 Add 메서드를 통해 삽입이 가능합니다.

반대로, 값을 제거할 때는 Remove(특정 요소 제거), RemoveAt(특정 색인값 제거), RemoveAll(모두 제거) 메서드를 통해 제거가 가능합니다.

목록 형태에서 확인할 수 있듯이, <데이터형식>을 변경하면 다른 형태의 목록도 가능합니다.


List<double[]> list = new List<double[]>();

for (int i = 0; i < 10; i++)
{
    list.Add(new double[] { i, i + 1 });
}

Console.WriteLine($"{list[3][0]}, {list[3][1]}");

Console.WriteLine(list.Count);

실제 출력 값 : 3, 4 / 10


앞선 1차원 배열을 비롯해 2차원 배열, 가변 배열, 목록 개체 등을 데이터 형식으로 사용할 수 있습니다.

목록의 요소 수는 Count 메서드를 통해 확인할 수 있습니다.

목록 내부에 포함된 double[]객체의 요소 수는 Length 메서드를 통해 확인할 수 있습니다.



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post C# 강좌 : 제 15강 - 생성자 & 소멸자 ⤧  Next post C# 강좌 : 제 17강 - 구조체
    C# Category