문제

C #에서이 두 코드 줄의 차이점 (있는 경우)은 무엇입니까? 라코 디스

라코 디스

둘 다 똑같이 작동하는 것 같습니다.C #은 후자를 입력 할 때 전자를 의미한다고 가정합니까?

도움이 되었습니까?

해결책

내가 해냈다 라코 디스

그리고 코드에 대해 ildasm을 실행했습니다.
생성 된 MSIL은 정확히 동일했습니다.

당신의 질문에 대답하기 위해 그들은 똑같은 것입니다.
컴파일러는 당신이 someEvent += new EventHandler( Program_someEvent );를 원한다고 추론하고 있습니다.
-MSIL에서 두 경우 모두 새로운 EventHandler 객체를 생성하는 것을 볼 수 있습니다

다른 팁

전에는 (.NET 1.x 일) 긴 형식이 유일한 방법이었습니다.두 경우 모두 Program_someEvent 메서드를 가리키는 대리자를 새로 만듭니다.

차이가 없다고 생각합니다.확실히 resharper는 첫 번째 줄에 중복 코드가 있다고 말합니다.

약간 주제에서 벗어남 :

대리자 (new EventHandler(MethodName))를 인스턴스화하고 해당 인스턴스를 재사용 할 수 있습니다.

C # 2003까지는 new XYZEventHandler가 필요하지 않았고, C # 2005에서 중복 코드를 생략 할 수 있었습니까?

진짜 알 수있는 한 가지 방법은 코드를 위해 생성 된 MSIL을 보는 것입니다 .. 좋은 산성 테스트가되는 경향이 있습니다.

어떻게 든 GC를 엉망으로 만들 수 있다는 재미있는 우려가 있습니다. 이러한 방식으로 수행 할 필요가없는 경우 새 델리게이트 유형을 선언하는 오버 헤드가 발생한다는 것이 이상해 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top