티스토리 뷰

목차

    반응형

    C# Lambda 예제, if else 람다 축약 방법 (Action 델리게이트)



    아래와 같은 if else 문을 축약하려 합니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    bool validName = true;
     
    if (validName)
    {
        name = "Daniel";
        surname = "Smith";
    }
    else
    {
        MessageBox.Show("Invalid name");
    }
    cs



    c# action 델리게이트 사용법c# action 사용법, 람다 응용



    bool 변수에 물음표 연산자를 응용하여 처리할 수 있을까요?


    1
    2
    3
    4
    5
    6
    7
    8
    9
    validName ? 
    {
        name = "Daniel";
        surname = "Smith";
        : 
    {
        MessageBox.Show("Invalid name");
    }
    cs


    위 처럼 구성할 수 있으나, 원래 의도인 축약(Short hand)을 만족하진 못합니다.


    그래서 Action 델리게이트 이용해 if else 문법을 람다 형식으로 축약할 수 있습니다.


    1
    2
    3
    4
    5
    6
    var a1 = new Action(() => { /* if code block */ });
    var a2 = new Action(() => { /* else code block */ });
     
    Action resultingAction = test_variable ? a1 : a2;
     
    resultingAction();
    cs


    미리 선언된 a1, a2를 이용해 삼항연산자를 resultingAction에 대입합니다. 마지막에 델리게이트를 구동합니다.


    이렇게 간단히 축약할 수 있네요.


    C# Lambda 예제, if else 람다 축약 방법 (Action 델리게이트)

    반응형