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

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

這是從程序設計在C#中列出1-83 作者寫道: 「另一個變化是,沒有外部用戶可以提高你的事件。它只能由定義事件的類的一部分代碼來提出。'爲什麼是事件的行動代表使用的「公共」訪問修飾符總是表現得「私人」

如果是這種情況,你不應該使用私人修改器爲清晰?

+0

舉動事件只是winthin類定義的事件,如果你使行動委託私人然後其他對象將如何訂閱它? – RAJ 2014-10-03 10:17:44

+0

if(OnChange!= null)應該被添加到你的代碼中,因爲OnChange()會失敗,沒有這個事件的事件處理程序... – 2014-10-03 10:43:27

+0

@MatíasFidemraizer這就是'= delegate {} 。 – Rawling 2014-10-03 12:18:28

回答

3

該事件標誌着public,這意味着它可以訂閱以公開 - 任何人都可以添加一個Action代表,它會被調用當事件觸發。如果您標記事件private,您只能從課程內部訂閱。 (protected:只能從類或者其繼承人,internal內:只能從組件內等)

事件可以永遠只能是發射從類中,猶如「火這一事件」方法標記爲private。這不受事件的實際訪問修飾符影響。

相關問題