私は以下のようなコードを記述する場合、カスタムアクセサのイベントは、デフォルトのイベントと同じように直接起動できないのはなぜですか?
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_にアクセスしようとしました... –
@Nick:いいえ、これは何が起こっているかを絶対に言っています:フィールドのようなイベントの場合、イベントを呼び出すように見える呼び出しは、 。あなたはその知識をとり、それをカスタムイベントに適用します - バッキングフィールドを介して*それを呼び出すこともできます。 –
@ジョン:エラーCS0079を理解するために、フィールドのようなイベントがどのように実装されているかを逆にすることができます。その答えが集中していたら、+1されて、私からやったでしょう。しかし、答えはフィールドのプライベートなアクセシビリティに焦点を当てています。それはそのポイントの横にあります。 –