2014-10-03 2 views
0
public class Pub 
{ 
    public event Action OnChange = delegate {}; 

    public void Raise() 
    { 
     OnChange(); 
    } 
} 

이 C#으로 프로그래밍에서 1-83 나열되는 이벤트 액션 대표와 함께 사용되는 '공공'액세스 한정자입니다 저자는 글을 참고하세요 : '또 다른 변화는 그 어떤 외부의 사용자가 할 수있다 너의 사건을 일으켜 라. 이벤트를 정의한 클래스의 일부인 코드에 의해서만 발생 될 수 있습니다. '는 왜 항상 '개인'행동

분명히하기 위해 개인 수식어를 사용하면 안됩니까? 사람이 Action 대리인을 추가 할 수 있으며이 때 이벤트가 발생 호출됩니다 -

+0

이벤트를 발생시키는 이벤트는 이벤트를 정의하는 클래스에만 해당됩니다. 작업 대리자를 비공개로 설정하면 다른 개체가 어떻게 구독하게됩니까? – RAJ

+0

'OnChange()'가 실패 할 것이기 때문에 (OnChange! = null)이 코드에 추가되어야합니다 ... –

+0

@ MatíasFidemraizer That'' delegate {}'의 목적은 다음과 같습니다. . – Rawling

답변

3

이벤트가 public 표시되어 있다는 사실은 가 공개적으로하는을 가입 할 수 있다는 것을 의미한다. 이벤트 private을 표시했다면 수업 내에서만 구독 할 수 있습니다. (. : 전용 클래스 또는 그 상속인, internal 내에서 : protected에만 어셈블리 내 등에서)

이벤트가 항상에만 할 수있다 는 "이 사건 화재", 클래스 내에서 것처럼를을 발사 방법은 private으로 표시했다. 이는 이벤트의 실제 액세스 수정 자의 영향을받지 않습니다.