2008-09-23 6 views
6

이 차이점은 무엇입니까?Delegate Handlers를 사용하는 이벤트와 그렇지 않은 이벤트의 차이점은 무엇입니까?

this.btnOk.Click += new System.EventHandler(this.btnOK_Click); 

그리고 이것?

this.btnOk.Click += this.btnOK_Click; 

둘 다 작동합니다. 전자는 스 니펫을 사용할 때 Visual Studio의 기본값입니다. 하지만 그것은 단지 광고를 추가로 말한 것처럼 보입니까, 아니면 뭔가를 놓친 것입니까?

+0

[C# 이벤트 처리기] 가능한 복제본 (http://stackoverflow.com/questions/26877/c-sharp-event-handlers) – nawfal

답변

10

차이가 없습니다. 델리게이트 인스턴스를 생략하는 것은 구문 캔디 일뿐입니다. C# 컴파일러는 사용자를 위해 대리자 인스턴스를 생성합니다.

1

나는 C#이 암시 적으로 대리자 처리기를 추가 한 이후로 믿습니다. 그러나 특히 가능한 대리자 형식이 여러 개인 경우 더욱 명확하게 나타낼 수 있습니다.

1

"+ = Delegate_Name"은 구문 설탕입니다. 컴파일러가 새로운 래퍼를 생성합니다.

4

C# 3.0 이상에서는 차이가 없습니다. 컴파일러의 한계로 인해 C# 3.0 EventHandler가 요구되기 전에 C# 3.0이 등장하면서 매우 명시 적으로 표현하기를 원치 않는 한 두 번째 형식이 선호되었습니다.

관련 문제