2011-12-22 37 views
0

默認值當聲明事件如警告CS0649:現場<fieldname>永遠不會分配給,永遠有它的空

public EventHandler<EventArgs> test; 

我拿到冠軍編譯器警告。

突出顯示「測試」 事件直接在它上面被聲明完全相同的語法,並在同一類中工作。

本質上它不允許我聲明EventArgs的另一個事件或此類中的任何其他類型。如果我註釋掉聲明和加註聲明,編譯和執行沒有問題。

如果我忽略警告並運行,在試圖引發該事件如

test(this,EventArgs.Empty); 

得到一個空引用異常,怎麼辦,我不明白怎麼事件還未獲得分配到首先?

+0

那麼,正確的答案被張貼,aparently當事件如果沒有用戶,則引發此異常。但是,當我試圖標記答案正確表示它已被刪除。 – Sabre 2011-12-22 18:26:31

回答

2

您的示例沒有聲明一個事件,它聲明瞭一個委託可以分配給的公共字段。

的語法,以使該事件是:

public event EventHandler<EventArgs> test; 

即使該事件將是無效的,如果沒有人註冊的事件處理程序,所以你必須測試test不爲null試圖之前叫它。

這將爲非空如果一些其他類附加到事件像這樣:

instanceOfMyClass.text += AnEventHandlerMethod; 

看看在events tutorial on Msdn.

+0

我看到你的答案的第二部分意味着同樣的事情,可能是爲什麼其他海報刪除了他們的。 – Sabre 2011-12-22 18:28:49

相關問題