C# Basic Tutorial (Condition)

2022. 1. 7. 00:00CSharp/Basic

반응형

Condition

if 조건문

int i = 15;
if(i > 15)
{
    Console.WriteLine("i > 15");
}

if(i > 15)
{
    Console.WriteLine("i > 15");
}
else
{
    Console.WriteLine("i <= 15"); //<-- 조건문상 아래가 실행됨
}

if (i > 15)
{
    Console.WriteLine("i > 15");
}
else if (i < 15)
{
    Console.WriteLine("i < 15");
}
else
{
    Console.WriteLine("i <= 15"); //<-- 조건문상 아래가 실행됨
}

 

switch 조건문

bool result = i < 15 ? false : true;
Console.WriteLine(result);

switch (i)
{
    case > 15:
        Console.WriteLine("i > 15");
        break;
    case < 15:
        Console.WriteLine("i < 15");
        break;
    default:
        Console.WriteLine("i <= 15"); //<-- 조건문상 아래가 실행됨
        break;

}

 

패턴 매칭을 통한 type checking

object variantData = 10;
//variantData = "10";
//variantData = 10.1;
//variantData = DateTime.Now;
//variantData = false;

switch (variantData)
{
    case 10:
        Console.WriteLine($"int {variantData}");
        break;
    case "10":
        Console.WriteLine($"string {variantData}");
        break;
    case 10.1:
        Console.WriteLine($"float or double {variantData}");
        break;
    case DateTime: // type check
        Console.WriteLine($"Datetime {variantData}");
        break;
    default:
        Console.WriteLine($"No Match {variantData.GetType().FullName} = {variantData}");
        break;

}

// 이와 같이 변경해도 같은 동작
switch (variantData)
{
    case int:
        Console.WriteLine($"int {variantData}");
        break;
    case string:
        Console.WriteLine($"string {variantData}");
        break;
    case float or double:
        Console.WriteLine($"float or double {variantData}");
        break;
    case DateTime: // type check
        Console.WriteLine($"Datetime {variantData}");
        break;
    default:
        Console.WriteLine($"No Match {variantData.GetType().FullName} = {variantData}");
        break;

}

변수를 사용한 condition 추가

// 변수를 사용하여 condition 을 추가하거나 동작을 재 정의 할 수도 있음
switch (variantData)
{
    case int num when num > 5: 
        Console.WriteLine($"int {variantData} > 5");
        break;
    case int num when num <= 5:
        Console.WriteLine($"int {variantData} <= 5");
        break;
    case string s:
        Console.WriteLine($"string {variantData}");
        break;
    case float or double :
        Console.WriteLine($"float or double {variantData}");
        break;
    case DateTime dt: // type check
        Console.WriteLine($"Datetime {variantData}");
        break;
    default:
        Console.WriteLine($"No Match {variantData.GetType().FullName} = {variantData}");
        break;

}

// 변수 생략도 가능함
switch (variantData)
{
    case var _ when (int)variantData > 5:
        Console.WriteLine($"int {variantData} > 5");
        break;
    case var _ when (int)variantData <= 5:
        Console.WriteLine($"int {variantData} <= 5");
        break;
    case string s:
        Console.WriteLine($"string {variantData}");
        break;
    case float or double:
        Console.WriteLine($"float or double {variantData}");
        break;
    case DateTime dt: // type check
        Console.WriteLine($"Datetime {variantData}");
        break;
    default:
        Console.WriteLine($"No Match {variantData.GetType().FullName} = {variantData}");
        break;

}

switch expression

// switch expression
string GetDay()
{
    return DateTime.Now.DayOfWeek switch
    {
        DayOfWeek.Monday => DayOfWeek.Monday.ToString(),
        DayOfWeek.Tuesday => DayOfWeek.Tuesday.ToString(),
        DayOfWeek.Wednesday => DayOfWeek.Wednesday.ToString(),
        DayOfWeek.Thursday => DayOfWeek.Thursday.ToString(),
        DayOfWeek.Friday => DayOfWeek.Friday.ToString(),
        DayOfWeek.Saturday or DayOfWeek.Sunday => "Weekend",

    };
}

Console.WriteLine(GetDay());

string GetDayByLambda() => DateTime.Now.DayOfWeek switch
{
    DayOfWeek.Monday => DayOfWeek.Monday.ToString(),
    DayOfWeek.Tuesday => DayOfWeek.Tuesday.ToString(),
    DayOfWeek.Wednesday => DayOfWeek.Wednesday.ToString(),
    DayOfWeek.Thursday => DayOfWeek.Thursday.ToString(),
    DayOfWeek.Friday => DayOfWeek.Friday.ToString(),
    _ => "Weekend",
};

Console.WriteLine(GetDayByLambda());

관련영상

https://youtu.be/s1o9wMx06-8

 

Git

https://github.com/yogingang/CSharpBasicTutorial

 

반응형

'CSharp > Basic' 카테고리의 다른 글

C# Basic Tutorial (Arrays)  (0) 2022.01.09
C# Basic Tutorial (Loop)  (0) 2022.01.08
C# Basic Tutorial (Strings)  (0) 2022.01.06
C# Basic Tutorial (Operator)  (0) 2022.01.05
C# Basic Tutorial (Variable, Type)  (0) 2022.01.04