1. foreach 의미
끝을 지정해주는 다른 반복문과 달리, 인자로 들어온 itrable-item의 내부 인덱스 끝까지 알아서 순환을 해주는 반복문이다.
foreach (element in iterable-item)
{
// body
}
: 여기서 element는 데이터 타입과 변수명을 포함하고. 아래와 같이 사용된다.
: foreach(string str in arr);
: foreach(데이터타입 변수명 in 배열,컬렉션등)
2. foreach 예제1 - 1차원 배열에서의 foreach
public static void Main(string[] args)
{
int[] arr = { 11, 12, 13, 14, 15, 16, 17 };
//foreach문
Console.WriteLine("## foreach 사용");
int index = 0;
foreach (int elem in arr)
{
Console.WriteLine("arr[" + index + "] : " + elem);
++index;
}
Console.WriteLine("current i : " + index);
//for문으로 작성했다면?
Console.WriteLine();
Console.WriteLine("## for 사용");
for (int i = 0; i < 7; ++i)
{
Console.WriteLine("arr[" + i + "] : " + arr[i]);
}
}
3. foreach 예제2 - 2차원 배열에서의 foreach
static void Main(string[] args)
{
int[,] arr = new int[4, 3]
{
{ 11, 12, 13 },
{ 21, 22, 23 },
{ 31, 32, 33 },
{ 41, 42, 43 }
};
//foreach문 1개로 해결가능.
Console.WriteLine("## foreach 사용");
int index = 0;
foreach(int elem in arr)
{
Console.WriteLine("arr[" + index + "] : " +elem);
++index;
}
Console.WriteLine("current i : " + index);
//for문으로 작성했다면
//이중 for문으로 작성해야 한다
Console.WriteLine();
Console.WriteLine("## for 사용");
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 3; ++j)
{
Console.WriteLine("arr[" + i + "," + j + "] : " + arr[i,j]);
}
}
}
4. foreach 예제3 - enum을 순회할 수 있는 foreach
enum Month
{
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
static void Main(string[] args)
{
Console.WriteLine("## foreach 열거형 출력 - Enum.GetValues()");
foreach (int elem in Enum.GetValues(typeof(Month)))
{
Console.WriteLine(elem + "월");
}
Console.WriteLine();
Console.WriteLine("## foreach 열거형 출력 - Enum.GetNames()");
foreach (string elem in Enum.GetNames(typeof(Month)))
{
Console.WriteLine(elem);
}
}
Enum.GetValues()를 이용하면 foreach를 돌면서 enum에 해당하는 int 값을 반환해준다.
(enum을 처음 선언했을때 아무 타입도 넣어주지 않으면 default 타입이 int로 지정된다.)
: Enum.GetNames()를 이용하면 foreach를 돌면서 enum에 해당하는 string 값을 반환해준다.
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# Thread 클래스 (스레드) (0) | 2023.03.24 |
---|---|
C# Task 클래스 (0) | 2023.03.24 |
C# 배열 복사 (0) | 2023.01.08 |
C# 배열 초기화, 다차원배열, 가변배열에 대해서 (0) | 2023.01.07 |
C# 제네릭 형식 제약 조건 (where) (0) | 2023.01.06 |