C# 배열 - foreach, 다차원 배열

2024. 8. 23. 19:03카테고리 없음

개요

C#에서 배열를 배워보겠습니다.

 

foreach (중요도 - 중)

조건식을 쓰지 않고 해당 배열을 처음부터 끝까지 반복할 때 사용합니다.

string[] games = new string[3] {"League of Legends", "메이플 스토리", "디아블로"}; 
foreach(string game in games)
{
// 0번째 반복시 game : League of Legends
// 1번째 반복시 game : "메이플 스토리"
// 2번째 반복시 game : 디아블로
Console.WriteLine(game);
}

//실행결과
//League of Legends
//메이플 스토리
//디아블로

 

내용 - 배열

string[] game = new string[3]; : 변수를 만들고 방을 만들기 

 

이렇게 만들고 나면 3칸 짜리 방을 가진 game이라는 집이 생기게 됩니다.

이방 한칸한칸을 인덱스 (Index) 라고 하는데 앞에 있는 방부터 0호실, 이후에는 1씩 올라갑니다. ( 0, 1, 2, 3, 4, 5 …)

저장방법

game[0] = "Leage of Legends"

game[1] = "메이플 스토리"

저장된 배열 출력방법

Console.WriteLine(game[0]); // 출력 - League of Legends

Console.WriteLine(game[1]); // 출력 - 메이플 스토리

Console.WriteLine(game[2]); // 출력 - (데이터가 없는게 아니라 “” 이 들어가 있는 상태)

조금 더 정확히는 비어있는 곳에 기본값 “”이 들어 있는 것은 아니라

배열이 만들어진 순간 모든 데이터가 기본값으로 초기화 됩니다.

 

생성과 동시에 초기화

배열을 만들고 뒤에 중괄호 { } 를 붙이고 그 안에 데이터를 입력하면 됩니다.

string[] game = new string[3] {"League of Legends", "메이플 스토리", "디아블로"};
int[] year = new int[4] {2020, 2021 2022, 2023};

단, 생성한 배열 크기에 맞게 데이터를 저장해야합니다.

더욱 간략하게

생성과 동시에 초기화를 진행한다면 배열의 방이 몇개짜리인지 입력하지 않아도 됩니다.

이러면 데이터 갯수가 맞지 않아 생기는 에러도 방지할 수 있습니다.

string[] game = new string[] {"League of Legends", "메이플 스토리", "디아블로"};

암시적으로 배열 형식 지정

때로는 new 와 함께 배열 형태를 만드는 것도 번거롭다고 느껴질 수 있습니다.

개발할때 형태가 짐작이 가능한 경우 생략하고 작성하는게 가능한 경우가 있습니다. 이런것을 암시적 이라고 표현합니다.

배열에서는 new 배열[ ] 을 생략하고 초기화 할 수 있습니다.

string[] game = {"League of Legends", "메이플 스토리", "디아블로"};

 

각 타입별 배열

문자배열

string[] game = new game[3];

game[0] = "Leage of Legends"

game[1] = "메이플 스토리"

Console.WriteLine(game[0]); // 출력 - Leage of Legends

Console.WriteLine(game[1]); // 출력 - 메이플 스토리

정수 배열

int[] year = new int[4];

year[0] = 2020;

year[1] = 2021;

year[2] = 2022;

year[3] = 2023;

Console.WriteLine(year[0]); // 출력 - 2020

Console.WriteLine(year[1]); // 출력 - 2021

Console.WriteLine(year[2]); // 출력 - 2022

Console.WriteLine(year[3]); // 출력 - 2023

실수 배열

float[] height = new float[4];

height[0] = 164.5f;

height[1] = 172.7f;

height[2] = 181.2f;

Console.WriteLine(height[0]); // 출력 - 164.5

Console.WriteLine(height[1]); // 출력 - 172.7

Console.WriteLine(height[2]); // 출력 - 181.2

배열의 타입이 맞지 않는 다면 에러가 발생합니다

string[] game = new game[3];

game[0] = "Leage of Legends"; // 정상 - string 배열에 string 저장

game[1] = 2020; // 에러 - string 배열에 int 저장

game[2] = 164.5; // 에러 - string 배열에 float 저장

 

배열에 반복문 혼합

int[] year = new int [4];

year[0] = 2020;
year[1] = 2021;
year[2] = 2022;
year[3] = 2023;

for (int i = 0; i < 4; i++)
{
    Console.WriteLine(year[i]);
}

 

실행결과

2020

2021

2022

2023

 

데이터를 활용만이 아니라 저장에도 이용될 수 있습니다.

 

int[] year = new int [4];

for (int i = 0; i < 4; i++)
{
    year[i] = 2020 + i;
    Console.WriteLine(year[i]);
}

 

실행결과

2020

2021

2022

2023

 

내용 - 다차원 배열

  • 여러 개의 배열을 하나로 묶어 놓은 배열
  • 행과 열로 이루어진 표 형태와 같은 구조
  • 2차원, 3차원 등의 형태의 배열을 의미
  • C#에서는 다차원 배열을 선언할 때 각 차원의 크기를 지정하여 생성합니다.

코드

// 선언과 함께 초기화
int[,] array2D = new int[3, 4] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };

 

// 2차원 배열의 선언과 초기화
int[,] array3 = new int[2, 3];  // 2행 3열의 int형 2차원 배열 선언

// 다차원 배열 초기화
array3[0, 0] = 1;
array3[0, 1] = 2;
array3[0, 2] = 3;
array3[1, 0] = 4;
array3[1, 1] = 5;
array3[1, 2] = 6;