나는 다음과 같은 코드를 작성하는 경우,커스텀 접근자를 가진 이벤트를 기본 이벤트와 같이 직접 실행할 수없는 이유는 무엇입니까?
class MainClass
{
static EventHandler _myEvent= delegate{};
static event EventHandler MyEvent
{
add{_myEvent += value;}
remove{_myEvent -= value;}
}
public static void Main (string[] args)
{
MyEvent(null,EventArgs.Empty);
}
}
컴파일러가 불평 할 것이다 : 오류 CS0079을 : 이벤트 MainClass.MyEvent' can only appear on the left hand side of
+ = '또는'- = '연산자를.
왜 이런 이상한 것이 존재합니까? 직접 이벤트를 실행할 수없는 경우 왜 처음부터 그런 것을 사용해야합니까? 그 버그 (나는 모노를 사용하고있다) 또는 고의적 인 섬세한 디자인인가? 아무도 나에게이 배후의 논리를 가르쳐 주시겠습니까? 미리 감사드립니다.
여기에는 문제가 없습니다. 선언 클래스 내에서 _is_ 이벤트에 액세스하려는 시도 ... –
@ 닉 : 아니요, 무슨 일이 벌어지고 있는지 절대적으로 말합니다 : 필드와 비슷한 이벤트의 경우 호출을 호출하는 것으로 실제로 호출됩니다 . 그런 다음 지식을 가져와 맞춤 이벤트에 적용합니다. 즉, 뒷 필드를 통해 * 호출합니다. –
@ 존 : CS0079 오류를 이해하기 위해 필드와 유사한 이벤트가 어떻게 구현되었는지 역으로 해결할 수 있다는 것에 동의합니다. 대답이 집중되어 있었다면, 그것은 +1이었을 것입니다. 그러나이 대답은 현장의 사적 접근성에 초점을 맞추고 있으며, 그 점은 그 지점에 있습니다. –