내일배움캠프/IL

[내배캠][Unity_6기][IL] C# 배열

binary는 호남선 2024. 8. 30. 20:46

- 다음 내용은 Unity 퀘스트 모음집 \ C# 사전 문법 기초 \ 배열 페이지들을 학습하고 작성되었습니다.


배열

기본

- 하나의 변수에 여러 데이터를 저장

- 데이터 타입 뒤에 [](대괄호)를 붙여 해당 변수를 배열로 만듦

string game = "LOL";
game = "WOW";   // game 변수에 LOL은 삭제되고 WOW만 저장

string game = "WOW";    // ERR : 같은 공간에 같은 변수명 사용 불가

// 배열 선언
string[] games = { "LOL", "WOW" };

생성

- 배열은 하나의 공간에 여러 데이터를 저장

- 각 데이터가 구별될 수 있도록 분리된 공간 필요

- 배열이 집이라면 각 데이터가 저장된 공간은 개인 방

- new 키워드로 새로운 방 생성

- [] 안에 몇 개의 데이터가 들어갈 지 명시

- 각 공간에 0 ~ n까지 자동으로 인덱스가 붙고 이를 통해 데이터에 접근 가능

// 변수 선언과 동시에 초기화
string[] game = new string[3];

// 변수만 만들고 공간은 나중에 할당
string[] game2;
game2 = new string[3];

 데이터 저장

- 각 인덱스에 하나씩 데이터를 저장할 수 있음

string[] game = new string[3];
game[0] = "LOL";
game[1] = "WOW";

game

"LOL" "WOW"  

0                                                      1                                                       2

 

데이터 활용

- 접근하다 : 특정 인덱스의 데이터를 다룬다
인덱스로 데이터에 접근하여 출력한 예)

Console.WriteLine(game[0]); // LOL
Console.WriteLine(game[1]); // WOW

각 타입별 배열

- 문자열 외에도 각 타입에 맞는 배열 생성 가능

- 배열의 타입이 맞지 않으면 에러

// 정수형 배열
int[] year = new int[3];
year[0] = 2022;
year[1] = 2023;
year[2] = 2024;

Console.WriteLine(year[0]);  // 출력 - 2022
Console.WriteLine(year[1]);  // 출력 - 2023
Console.WriteLine(year[2]);  // 출력 - 2024

// 실수형 배열
float[] weight = new float[2];
weight[0] = 64.5f;
weight[1] = 72.7f;

Console.WriteLine(weight[0]);  // 출력 - 64.5
Console.WriteLine(weight[1]);  // 출력 - 72.7

// 잘못된 예시
string[] game = new string[3];
game[0] = "LOL";  // OK - string 배열에 string 저장
game[1] = 2024; // ERR - string 배열에 int 저장
game[2] = 64.5; // ERR - string 배열에 float 저장

반복 처리

- 반복문을 이용해 배열 접근하면 효율적

// 정수형 배열
int[] year = new int[3];
year[0] = 2022;
year[1] = 2023;
year[2] = 2024;

// 반복문 사용하지 않고 출력
Console.WriteLine(year[0]);  // 출력 - 2022
Console.WriteLine(year[1]);  // 출력 - 2023
Console.WriteLine(year[2]);  // 출력 - 2024

// 반복문 사용하여 출력
for (int i = 0; i < 3; i++)
{
    Console.WriteLine(year[i]);
}

foreach

- 조건식을 쓰지 않고 배열을 처음부터 끝까지 반복

- 기본 형태

foreach (변수타입 반복변수 in 배열)
{
    실행 내용
}

- 반복변수 타입은 배열의 타입과 일치해야 함

string[] games = new string[3] { "LOL", "WOW", "FIFA" };
foreach (string game in games)
{
    Console.WriteLine(game);
}
LOL
WOW
FIFA

추가 학습

배열에 데이터가 없으면?

- 데이터가 할당되지 않은 공간은 기본값 출력

int[] numbers = new int[2];
Console.WriteLine(numbers[0]);  // 출력 - 0

bool[] check = new bool[2];
Console.WriteLine(check[0]);    // 출력 - false

string[] names = new string[2];
Console.WriteLine(check[0]);    // 출력 -

배열 초기화

- 배열은 생성과 동시에 데이터 기본값으로 초기화

- 배열 생성과 동시에 초기화 가능

- 데이터 개수와 new 키워드 생략 가능

// 생성과 동시에 초기화
int[] years1 = new int[3] { 2022, 2023, 2024 };
// 데이터 개수 생략
int[] years2 = new int[] { 2019, 2020, 2021 };
// new 키워드 생략
int[] years3 = { 2017, 2018 };

인덱스 초과

- 존재하지 않는 인덱스로 접근하면 에러

- 항상 배열의 크기 잘 생각하기

string[] game = new string[3];
game[3] = "FIFA";   // IndexOutOfRangeException