2025년 9월 17일 수요일

C#에서 event나 delegate를 구독할때 처리하는 방법

C#에서 event나 delegate를 구독할때 처리하는 방법은
총 3가지 이다.


mybutton이 있었을때 이버튼의 click이벤트를 바인딩하려 한다.


1. 람다식 (인라인으로 처리)

mybutton.click += (_, _) => OtherMethod()

이는 람다식으로 표현하는 방법인데 원래 파라미터 object, eventargs의
내용을 무시하고 내부처리를 이어하기 위함 (컴파일러가 추론할수 있음)


2. 델리게이트처리 (인라인)

mybutton.click += delegate (object sender, EventArgs e) { ... }

델리게이트를 선언하면서 호출형태를 명시하고 { ... } 안에 내용을 기술
파라미터의 형태를 컴파일러가 추론할수 없음으로 데이터형을 기술해야함


3. 별도 함수 지정 (인라인 아님)

public void MyClick(object sender, EventArgs e) { ... }
---
mybutton.click += MyClick;
---

별도의 함수에서 처리하는 방법임


※ 파라미터를 처리할때 EventArgs 가 아닌 다른 Args를 원하는 경우 해당 클래스로
바인딩 해줘야함 대리자의 시그니처가 정확한지 판단하기 때문임. ※


댓글 없음:

댓글 쓰기