programing

사용자 지정 EventHandler 대 EventHandler

nasanasas 2020. 11. 25. 08:01
반응형

사용자 지정 EventHandler 대 EventHandler


최근에이 코드 사이에 중요한 차이점이 있는지 궁금합니다.

public event EventHandler<MyEventArgs> SomeEvent;

그리고 이것:

public delegate void MyEventHandler(object sender, MyEventArgs e);
public event MyEventHandler SomeEvent;

둘 다 똑같은 일을하고 나는 어떤 차이도 말할 수 없었습니다. .NET Framework의 대부분의 클래스는 이벤트에 대해 사용자 지정 이벤트 처리기 대리자를 사용한다는 것을 알았습니다. 이에 대한 구체적인 이유가 있습니까?


네가 옳아; 그들은 같은 일을합니다. 따라서 더 명확하고 타이핑이 덜 필요하기 때문에 전자를 후자보다 선호해야합니다.

많은 .NET Framework 클래스에 자체 사용자 지정 이벤트 처리기 대리자가있는 이유는 버전 2.0에서 제네릭 (축약 형 구문 허용)이 도입되기 전에 작성 되었기 때문입니다. 예를 들어, 거의 모든 WinForms 라이브러리는 제네릭 이전에 작성되었으며 당시에는 후자 형식이 작업을 수행 하는 유일한 방법이었습니다.


두 번째 방법은 더 많은 유연성과 형식 안전성을 제공합니다. 상응하는 서명을 가진 메소드가 적습니다 => 실수 할 곳이 적습니다. 커스텀 델리게이트를 사용하면 필요한 매개 변수를 정확하게 지정할 수 있습니다 (또는 아무 것도 지정하지 않음). sender + args화물 컬트가 없습니다.

참고 URL : https://stackoverflow.com/questions/8668083/custom-eventhandler-vs-eventhandlereventargs

반응형