C#의 for문은 다른 프로그래밍 언어와 크게 다르지 않은 매커니즘으로 돌아가지만, 중요한 요소가 몇 가지 있다.

for문은 다음과 같이 선언한다.

for (초기값, 반복 횟수, 증감 연산자) { 실행할 명령문}

보기만 해서는 뭔가 어려워보인다. 하지만 다음 코드를 보면 정말 쉬운 매커니즘이라는 걸 알 수 있다.

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

for (int i = 0; i < a.Length; i++)
{
    Console.WriteLine("반복합니다~" + a[i]);
}

1, 2, 3, 4, 5가 들은 배열이 있다. 우리는 이 배열 안에서 for문을 돌릴 것이다.

for문 안에서 쓰일 임시 변수를 선언한다. 초기값은 0으로 정했다. 임시 변수 i는 a.Length 안에서 반복한다. 즉 i < 5까지 반복한다는 이야기다. 마지막으로 i를 1씩 증가시킨다.

콘솔 출력라인에는 메시지와 함께 현재의 배열 위치를 알려준다.

반복합니다~1 반복합니다~2 반복합니다~3 반복합니다~4 반복합니다~5

당연히 출력 결과는 다음과 같다.

하지만 이 for문에는 명확한 순서가 있다는 것을 눈치챘을 것이다. 이것을 눈치채지 못하면 for문을 쓰는 이유가 없게 된다.

csharp-for-foreach-1.png

  1. i = 0으로 초기화 - 0부터 시작한다.

  2. if (i < 5) { } - 5 미만이면 계속 반복한다.

  3. 명령문 실행

  4. 증감 연산자 실행 - i가 1 늘어난다.

그다음 4에서 2로 돌아가서 계속 반복하는 것이다.

i = 1이 되고, if 1 < 5 = true를 반환하니 다시 명령문을 실행, i는 +1하면 2가 되고, 이하 반복…

이 순서를 반드시 이해하고 있어야 한다.

foreach문은 보다 쉽다. 사용법은 다음과 같다.

foreach (데이터형식 임시변수이름 in 반복 가능한 객체) { 실행할 명령문 }

만약 당신이 Python을 한다면 이해가 쉬울 것이다. 반복 가능한 객체는 List와 같이 __iter__한 존재들이다. 다시 말해 반복문에서 빙글빙글 돌릴 수 있는, 객체가 하나가 아닌 여러개 있는 것이다.

이제 foreach문을 선언해보자.

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

foreach (int num in a)
{
    Console.WriteLine(num);
}

출력 결과 당연히 1부터 5까지 순서대로 출력된다.