2009-08-20 5 views
38

은 이것이다 :제거 이벤트 핸들러

Button.Click -= new EventHandler(Button_Click); 

이 같은 :

Button.Click -= Button_Click; 

나에게 전자는 방법에 대한 새로운 참조를 제거하고, 후자 것 같다 때문에 물어 하나는 메소드 자체를 제거하는 중입니다. 그런데 새로운 EventHandler 부분이 + = 또는 - = overload에 함축되어 프로그래머가 명시 적으로 그렇게 할당하지 않을 수도 있습니다.

는 경우는 어떻게

Button.Click -= Button_Click; 

VS
Button.Click -= new EventHandler(Button_Click); 

에 대한 감사 다르다.

답변

45

동일합니다. 두 번째는 첫 번째 문법에 대한 구문 설탕 일 뿐이며 대리자 형식에 대해서는 동등 비교가 적절하게 오버로드됩니다.

동일한 대상, 메서드 및 호출 목록을 가진 두 개의 대리자는 동일한 것으로 간주됩니다.

자료 : MSDN, Delegate.Equality Operator

+0

답변 해 주셔서 감사합니다. – Carlo

0

최종 결과는 동일하다. 컴파일러는 델리게이트의 유형을 자동으로 추론하므로 새로운 연산자는 델리게이트를 생성 할 필요가 없습니다.