코딩하는코알라/C#
C# 점프문 break, continue, return , goto
룰루랄라코알라
2022. 4. 25. 17:12
break 문은 (for, foreach, while , do 문)등을 종료 시켜준다.
int[] numbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (int number in numbers)
{
if (number == 3)
{
break;
}
Console.Write($"{number} ");
}
Console.WriteLine();
Console.WriteLine("End of the example.");
// Output:
// 0 1 2
// End of the example.
continue 문
가장 가까운 바깥쪽 (for, foreach, while , do 문)의 반복을 시작
for (int i = 0; i < 5; i++)
{
Console.Write($"Iteration {i}: ");
if (i < 3)
{
Console.WriteLine("skip");
continue;
}
Console.WriteLine("done");
}
// Output:
// Iteration 0: skip
// Iteration 1: skip
// Iteration 2: skip
// Iteration 3: done
// Iteration 4: done
return 문
return 문은 해당 문의 함수실행을 종료하고 컨트롤과 함수의 결과를 호출자로 반환
Console.WriteLine("First call:");
DisplayIfNecessary(6);
Console.WriteLine("Second call:");
DisplayIfNecessary(5);
void DisplayIfNecessary(int number)
{
if (number % 2 == 0)
{
return;
}
Console.WriteLine(number);
}
// Output:
// First call:
// Second call:
// 5
식이 없이 return 문을 사용 하면 조기에 멤버를 종료
double surfaceArea = CalculateCylinderSurfaceArea(1, 1);
Console.WriteLine($"{surfaceArea:F2}"); // output: 12.57
double CalculateCylinderSurfaceArea(double baseRadius, double height)
{
double baseArea = Math.PI * baseRadius * baseRadius;
double sideArea = 2 * Math.PI * baseRadius * height;
return 2 * baseArea + sideArea;
}
// 12.57
함수멤버가 값을 계산하는 경우 해당식은 return 아닌 경우 멤버의 반호나 형식으로 암시적으로 변환될수있다.
goto 문
goto문을 사용하면 해당 레이블 범위내에 없는 컨트롤을 전송할수있다.
using System;
public enum CoffeChoice
{
Plain,
WithMilk,
WithIceCream,
}
public class GotoInSwitchExample
{
public static void Main()
{
Console.WriteLine(CalculatePrice(CoffeChoice.Plain)); // output: 10.0
Console.WriteLine(CalculatePrice(CoffeChoice.WithMilk)); // output: 15.0
Console.WriteLine(CalculatePrice(CoffeChoice.WithIceCream)); // output: 17.0
}
private static decimal CalculatePrice(CoffeChoice choice)
{
decimal price = 0;
switch (choice)
{
case CoffeChoice.Plain:
price += 10.0m;
break;
case CoffeChoice.WithMilk:
price += 5.0m;
goto case CoffeChoice.Plain;
case CoffeChoice.WithIceCream:
price += 7.0m;
goto case CoffeChoice.Plain;
}
return price;
}
}
반응형