Csharp-events

提供:Dev Guides
移動先:案内検索

C#-イベント

  • イベント*は、キーを押す、クリックする、マウスを動かすなどのユーザーアクション、またはシステムが生成する通知などのイベントです。 アプリケーションは、発生したイベントに応答する必要があります。 たとえば、割り込み。 イベントはプロセス間通信に使用されます。

イベントでのデリゲートの使用

イベントはクラスで宣言および発生され、同じクラスまたは他のクラス内のデリゲートを使用してイベントハンドラーに関連付けられます。 イベントを含むクラスは、イベントを公開するために使用されます。 これは publisher クラスと呼ばれます。 このイベントを受け入れる他のクラスは subscriber クラスと呼ばれます。 イベントは publisher-subscriber モデルを使用します。

*publisher* は、イベントとデリゲートの定義を含むオブジェクトです。 イベントデリゲートの関連付けもこのオブジェクトで定義されます。 パブリッシャークラスオブジェクトはイベントを呼び出し、他のオブジェクトに通知されます。
*subscriber* は、イベントを受け入れ、イベントハンドラーを提供するオブジェクトです。 パブリッシャークラスのデリゲートは、サブスクライバークラスのメソッド(イベントハンドラー)を呼び出します。

イベントの宣言

クラス内でイベントを宣言するには、最初にイベントのデリゲート型を宣言する必要があります。 例えば、

public delegate string MyDel(string str);

次に、 event キーワードを使用して、イベント自体が宣言されます-

event MyDel MyEvent;

上記のコードは、_BoilerLogHandler_という名前のデリゲートと、_BoilerEventLog_という名前のイベントを定義します。このイベントは、デリゲートが発生したときに呼び出します。

using System;

namespace SampleApp {
   public delegate string MyDel(string str);

   class EventProgram {
      event MyDel MyEvent;

      public EventProgram() {
         this.MyEvent += new MyDel(this.WelcomeUser);
      }
      public string WelcomeUser(string username) {
         return "Welcome " + username;
      }
      static void Main(string[] args) {
         EventProgram obj1 = new EventProgram();
         string result = obj1.MyEvent("Tutorials Point");
         Console.WriteLine(result);
      }
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Welcome Tutorials Point