본문 바로가기
PC&웹/VS프로그래밍

(C#) Object sender Switch 비교문 (패턴매칭)

by Simulz 2022. 8. 11.
반응형

메뉴, 버튼의 Click 이벤트를 처리할 때, 하나의 메서드로 통합하려면

이전에는 if~else if문을 엄청나게 써댔다.
if문에도 sender as ToolStrip~~ 식으로 바꾸고 == 비교하고...{ }중괄호 쓰고...

같은 역할을 하는 버튼인데도 같은 if문을 또 써야 하고...

 

switch 패턴 매칭으로 코드를 줄여보자.

private void menu_Click(object sender, EventArgs e)
{
    switch (sender)
    {
        case { } x when x == menu_1번:
            break;
        case { } x when x == menu_2번:
        case { } x2 when x2 == button_1번:
        	// 메뉴버튼과 툴바버튼 처럼 클래스가 달라도 묶어서 사용 가능
            break;
        case { } x when x == menu_3번:
            break;
        case var x when x == image_1:
        	// 그림을 왜 누르니
            break;
    }
}

sender as Type 필요 없음

x 변수는 쓰고 싶은대로...

break를 만나기 전까지 여러 case를 묶을 때는 변수명이 달라야 함.

{ }는 catch-all. 교과서대로 하려면 var를 사용한다.
반응형

태그

댓글0