본문 바로가기
C++ 200제/코딩 IT 정보

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

by vicddory 2019. 2. 19.

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 델리게이트)

댓글