- ベストアンサー
Visual-C#の event キーワードの「意義」が分かりません
Visual-C#というものを初めて触っている者です。 フォーム上にボタン等のコントロールを配置して、ボタンをダブルクリックすると、イベントハンドラをユーザが記述するコード部分(partial class)が表示されてくるのですが(Form1.cs)、このpartial classの残りの、ユーザが編集する必要のないコードはForm1.Designer.cs内に自動生成されます。 このForm1.Designer.cs内に、たとえば this.Button1.Click += new System.EventHandler( this.Button1_Click ); ←(1) のようなコードが自動生成されているわけです。 ここで、Button1とはButtonクラスのオブジェクトであり、ClickとはButtonクラスの(Controlクラスから継承した)Clickイベントだということです。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.click(VS.85).aspx public event EventHandler Click ←(2) ここで使用されているEventHandlerとは何かというと、delegateです。 http://msdn.microsoft.com/ja-jp/library/system.eventhandler.aspx public delegate void EventHandler(Object sender, EventArgs e) ←(3) 「イベントとは、コンピュータ・プログラムの実行に際し、何らかのアクションが発生した際にプログラムに発信される信号(これをメッセージと呼んだりする)をいう。」(『ウィキペディア(Wikipedia)』) この「イベント」を、.NetFrameworkのクラスライブラリでは、(2)のように「EventHandler」という名前のデリゲートクラス型の変数として定義しているわけですが、(2)の中の「event」というキーワードの「意義」が分かりません。 Controlクラス定義内で(2)式のように、コントロールの「クリック」イベントを、「EventHandler」という名前のデリゲートクラス型の変数と定義するというのなら、それはそれで分かるのですが、なぜ更に「event」というキーワードを付ける必要があるのかが、よく分からないのです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- Yune-Kichi
- ベストアンサー率74% (465/626)
- Werner
- ベストアンサー率53% (395/735)
- Werner
- ベストアンサー率53% (395/735)
お礼
http://msdn.microsoft.com/ja-jp/library/ms173118.aspx 「フィールドとは、クラスまたは構造体で直接宣言される任意の型の変数です。フィールドは、それを含んでいる型のメンバです。」 と書いてあるのですが、フィールドをメンバ変数と呼ぶのはまずいのでしょうか? http://www.java2s.com/Tutorial/CSharp/0140__Class/0100__Member-Variable.htm にも、 7. 5. Member Variable 7. 5. 1. fields とか書いてあるし、Member Variableの日本語訳は「メンバ変数」ではないのでしょうか? >MSDNに資料が見つかったので断言してしまいますが,イベントとは, >ObserverパターンにおけるObserverインターフェイスをデリゲートで置き換えた物です。 「Controlクラス定義内で(2)式のように、コントロールの「クリック」イベントを、「EventHandler」という名前のデリゲートクラス型の変数と定義するというのなら、それはそれで分かるのですが、」 と初めから書いてあります。
補足
>メンバというのは, >・フィールド ・・・ >・イベント >です。イベントは独立のカテゴリです。 仰っている意味が分かりました。 私はフィールドとイベントをいっしょくたにして考えていました。 すいません。