티스토리 뷰

C#(.NET)

[C#] 흐름제어 (switch, C# 7.0, when)

열혈허슬러 상추님 2020. 6. 12. 22:55
190730 - 2 - 흐름제어
 


 
C# switch문은 정수형식과 문자열 형식 두 가지를 지원한다.
 
정수와 문자열 형식 외에도 데이터 형식을 조건으로 사용할 수 있다. (C# 7.0 이상)
 
static void Main(string[] args)
{
    object obj = 123; // boxing
    switch (obj)
    {
        case int i: // 데이터 형식 사용시, 형식 옆에 식별자를 붙여주어야함. (case절 내부에서 사용가능)
            Console.WriteLine("int:"+i);
            break;
        case float f:
            Console.WriteLine("float:" + f);
            break;
        default:
            break;
    }
}
int:123
 
switch
static void Main(string[] args)
{
    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($"{i}는 int 형식입니다.");
            break;
        case float f:
            Console.WriteLine($"{f}는 float 형식입니다.");
            break;
        default:
            Console.WriteLine($"{obj}는 모르는 형식입니다.");
            break;
    }
}
 
switch (obj)
{
    case int i:
        Console.WriteLine($"{i}는 int 형식입니다.");
        break;
    case float f when f < 0: //데이터 형식에 따라 분기하는 경우 when 사용가능
        Console.WriteLine($"{f}는 float 형식이며 음수입니다.");
        break;
    case float f:
        Console.WriteLine($"{f}는 float 형식이며 양수입니다.");
        break;
    default:
        Console.WriteLine($"{obj}는 모르는 형식입니다.");
        break;
}
 
static void Main(string[] args)
{
    string s = "Good Morning Good Morning";
    Console.WriteLine($"{s.IndexOf('G')}");
    Console.WriteLine($"{s.IndexOf("Good")}");
    Console.WriteLine($"{s.IndexOf('M')}");
    Console.WriteLine($"{s.IndexOf("Morning")}");
}
0
0
5
5
공유하기 링크
TAG
댓글
댓글쓰기 폼
네이버 이웃추가
«   2020/10   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함