가능한 중복 : 빈 이벤트 핸들러를 항상 추가해도 괜찮습니까?
빈을 할당의 단점이 있습니다 (C#에서) 이벤트 핸들러를 사용하는 경우public event Action handler; … // some method: if(handler != null) handler();
Is there a downside to adding an anonymous empty delegate on event declaration?
다음 패턴은 매우 일반적입니다 이 이벤트에 위임 하시겠습니까? 이렇게하면 이벤트가 발생하는 모든 곳에서 if !=null
조건이 저장됩니다. 물론 이벤트가 항상 적절한 대리인으로 지정되도록 보장 할 수없는 경우에만 적용됩니다.
public event Action handler;
…
// in constructor:
handler +=()=>{};
…
// some method:
handler();
확실히 약간의 성능 저하가 있지만 코드를 훨씬 깨끗하게합니다. 그런 경우 가장 좋은 방법은 무엇입니까? 기술적 인 단점이 있습니까?
제 생각에는 좋은 습관이 아닙니다. 네, null 체크를 저장했지만, 몇 달 후, 버그 나 유지 보수를위한 코드를 검사 할 때 첫 번째 예제는 코드의 목적을 더 잘 보여줍니다. – Steve
보호 기능이 없으면 null을 검사하고 호출하는 사이에 'handler'가 null로 설정 될 수 있습니다. 'handler'의 값을 로컬 변수에 복사하고 _that_에 null을 체크해야합니다. –
'handler'의 값을 지역 변수에 복사하지 않기 때문에 첫 번째 코드가 깨졌습니다. – CodesInChaos