[This is C#] Chapter 5. 코드의 흐름 제어하기
Table of Contents
이것이 C#이다 책을 읽고 공부한 노트입니다.
분기문 #
- C#이 제공하는 분기문
if
문switch
문
switch 문 #
- C# 7.0부터는
switch
문에 데이터 형식을 조건으로 사용할 수 있게 되었다.
object obj = null;
string s = Console.ReadLine();
if (int.TryParse(s, out int out_i))
obj = out_i;
else if (float.TryParse(s, out float out_f))
obj = out_f;
else
obj = s;
switch (obj)
{
case int i:
Console.WriteLine("int 형식");
break;
case float f:
Console.WriteLine("float 형식");
break;
default:
Console.WriteLine("모르는 형식");
break;
}
when
절을 이용하여 추가적은 조건 검사를 수행할 수 있다.
switch (obj)
{
case int i:
Console.WriteLine("int 형식");
break;
case float f when f >= 0:
Console.WriteLine("양의 float 형식");
break;
case float f:
Console.WriteLine("음의 float 형식");
break;
default:
Console.WriteLine("모르는 형식");
break;
}
switch 식 #
switch
문을switch
식으로 바꾸는 예제
int score = 99;
int result = (int)(Math.Truncate(score/10.0) * 10); // 1의 자리를 버린다.
string grade = "";
switch (result)
{
case 90:
grade = "A";
break;
case 80:
grade = "B";
break;
case 70:
grade = "C";
break;
default:
grade = "F";
break;
}
int score = 99;
int result = (int)(Math.Truncate(score/10.0) * 10);
string grade = result switch
{
90 => "A",
80 => "B",
70 => "C",
_ => "F"
};
switch
식에when
절 활용해보기
bool repeated = true;
int score = 99;
int result = (int)(Math.Truncate(score/10.0) * 10);
string grade = result switch
{
90 when repeated == true => "A+",
90 => "A",
80 => "B",
70 => "C",
_ => "F"
};
반복문 #
- C#이 제공하는 반복문
while
문do while
문for
문foreach
문
foreach #
- 배열이나 컬렉션을 순회하면서 각 데이터 요소에 차례대로 접근하도록 해준다. 그리고, 끝에 도달하면 자동으로 반복이 종료된다.
int[] arr = new int[]{0, 1, 2, 3, 4};
foreach (int a in arr)
Console.WriteLine(a);
점프문 #
- C#이 제공하는 점프문
break
continue
goto
return
throw
goto #
goto 레이블;
을 통해서 해당 레이블(Label)로 건너뛸 수 있다.- 중첩된 반복문을 단번에 뚫고 나올 수 있다는 장점이 있다.
string input = Console.ReadLine();
int input_number = Convert.ToInt32(input);
int exit_number = 0;
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 200; j++)
{
for (int k = 0; k < 300; k++)
{
if (exit_number++ == input_number)
goto EXIT_FOR;
Console.WriteLine(exit_number);
}
}
}
EXIT_FOR:
Console.WriteLine("Exited for");