2012-05-02 3 views
2

다음과 같은 내용이 상용구 코드에 많이 반복되어 있지만 아직 사용하지 않은 것 같습니다.이러한 인수가 이벤트의 기본값 인 이유는 무엇입니까?

(object sender, EventArgs e)

예 : 나는 새로운 버튼을 더블 클릭하면 다음 이벤트의 방법은 이러한 인수를 가지고 있는데이 방법에 코드를 추가 할 때 아직 내가 인수를 사용하지 마십시오.

언제 사용합니까?

답변

7

발신자가 이벤트의 발신자이기 때문에 동일한 클릭 핸들러를 사용하는 버튼이 여러 개있을 수 있습니다. 예를 들어 클릭 한 버튼을 사용 중지하려는 경우입니다. 물론 이벤트 핸들러를 사용하여 단일 소스에 대한 이벤트를 구독하는 경우에는별로 유용하지 않습니다.

EventArgs 자체는 아무런 정보가 없기 때문에, 꽤 무의미 - 그러나 그것은 (예 : 키보드와 마우스 정보 등) 정보를 가지고 할 다른 클래스를위한 기본 클래스처럼 사용된다. 그것이 존재하는 것에 대한 좋은 점은, 만약 여러분이 에 추가 정보가 필요하지 않다면, 에 가입 할 수있는 하나의 이벤트 핸들러를 생성하여 패턴을 따르는 모든 이벤트를 구독 할 수 있다는 것입니다. 예 :

button.Click += LogEvent;  // EventHandler delegate type 
textArea.KeyDown += LogEvent; // KeyEventHandler delegate type 

... 

private static void LogEvent(object sender, EventArgs ignored) 
{ 
    Control control = (Control) sender; 
    Log("Event fired by " + control.Name); 
} 
+0

언어에 초보자로 의심됩니다. 나중에 참조 할 수 있도록 답변을 유지할 수 있습니까? 즉, 이벤트와 위임자를 완전히 이해할 때까지는 특정 방법에 대해 이러한 인수를 기본값으로 받아 들여야합니다. – whytheq

+0

(object, EventArgs) 매개 변수가있는 이벤트의 경우 .net 프레임 워크에 미리 정의 된 대리자가 추가되어야합니다. 따라서 사용자는 이러한 이벤트를 사용하는 동안 대리인을 만들 필요가 없었습니다. –

+1

@Romil - 시원한; 그 서명으로 이벤트를 생성하면 배경 대표 인 – whytheq

관련 문제