2011-12-22 8 views
0

警告CS0649:フィールド<fieldname>が割り当てされることはありませんし、常にそのデフォルト値はnullになります

public EventHandler<EventArgs> test; 

などのイベントを宣言するとき、私はタイトルコンパイラの警告が表示されます。

"test"のハイライト付き イベントは、まったく同じ構文として宣言され、同じクラスで動作します。

本質的に、このクラスのEventArgsまたは他のタイプの別のイベントを宣言することはできません。私が宣言とraise文をコメントアウトすると、問題なくコンパイルして実行します。

そして、私は警告を無視して実行した場合、null参照の例外を取得し、そのような

test(this,EventArgs.Empty); 

としてイベントを発生しようとする上で、与えるもの、私はイベントは、これまでがにが割り当てられます方法を理解していません最初は?

+0

まあ見てみましょう、正しい答えは、イベントがあるaparentlyとき、投稿されましたサブスクライバが存在しない場合は、この例外をスローします。しかし、私は正しい答えをマークしようとしたとき、それは削除されたと言います。 – Sabre

答えて

2

この例ではイベントを宣言していませんが、デリゲートを割り当てることができるパブリックフィールドが宣言されています。

構文イベントであることを確認する:

public event EventHandler<EventArgs> test; 

であっても、誰もイベントハンドラを登録しない場合は、testをしようとする前に、nullではないことをテストする必要がありますので、イベントはnullになることであれを呼べ。ようにイベントにアタッチいくつかの他のクラスならばそれは非nullになります

instanceOfMyClass.text += AnEventHandlerMethod; 

events tutorial on Msdn.

+0

私はあなたの答えの後半部分が同じことを意味しているのを見るでしょう、おそらくなぜ他のポスターがそれらを削除したのでしょうか? – Sabre

関連する問題