C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のイベントとは?基本の仕組みと使い方を実例付きで解説

C#におけるイベント(Event)とは、キーの押下、マウスのクリックや移動といったユーザー操作、あるいはシステムが生成する通知など、プログラムの外部で発生した「出来事」を表す仕組みです。

イベントはクラス内で宣言され、発生(raise)されます。そして、デリゲート(delegate)を介してイベントハンドラと関連付けられます。この関連付けは、同じクラス内でも別のクラスでも行うことが可能です。イベントを保持しているクラスは、そのイベントを外部に公開(パブリッシュ)する役割を担います。

イベント宣言の基本手順

クラス内でイベントを宣言するには、まずイベント用のデリゲート型を定義する必要があります。例えば、次のように記述します。

public delegate string myDelegate(string str);

続いて、このデリゲート型を使ってイベントを宣言します。

event myDelegate newEvent;

これで、myDelegate 型に基づくイベント newEvent の準備が整いました。あとは、このイベントにメソッド(イベントハンドラ)を登録し、必要なタイミングで呼び出すことで利用できます。

C#でのイベント処理サンプルコード

以下は、C#でイベントを実際に扱うシンプルな例です。

サンプルコード

using System;

namespace Demo {
    public delegate string myDelegate(string str);

    class EventProgram {
        event myDelegate newEvent;

        public EventProgram() {
            // コンストラクタでイベントハンドラを登録
            this.newEvent += new myDelegate(this.WelcomeUser);
        }

        public string WelcomeUser(string username) {
            return "Welcome " + username;
        }

        static void Main(string[] args) {
            EventProgram obj1 = new EventProgram();
            string result = obj1.newEvent("My Website!");
            Console.WriteLine(result);
        }
    }
}

実行結果

Welcome My Website!

コードのポイント解説

  • デリゲートの宣言: public delegate string myDelegate(string str); により、文字列を受け取り文字列を返すメソッドを参照できるデリゲート型を定義しています。
  • イベントの宣言: クラス内で event myDelegate newEvent; としてイベントを宣言します。
  • ハンドラの登録: コンストラクタ内で += 演算子を使い、WelcomeUser メソッドをイベントに登録しています。
  • イベントの発火: Main メソッド内でイベントを呼び出すと、登録された WelcomeUser が実行され、結果が出力されます。

このように、C#のイベントはデリゲートと組み合わせることで、「何かが起きたときに、登録しておいた処理を自動的に実行する」という柔軟な設計を実現できます。GUIアプリケーションのボタンクリック処理など、実務でも頻繁に活用される重要な概念なので、ぜひ基本的な使い方をマスターしておきましょう。

  1. C#の正規表現とは?基本概念とRegexクラスの使い方をわかりやすく解説

    正規表現とは、入力テキストと照合(マッチング)を行うためのパターンのことです。.NETフレームワークには、このような照合を実現する正規表現エンジンが組み込まれており、開発者はこれを利用して高度な文字列操作を行えます。パターンは、1つ以上の文字リテラル、演算子、または構成要素から構成されます。これらを組み合わせることで、「特定の文字で始まる単語」「メールアドレス形式の文字列」など、柔軟な条件での文字列検索が可能になります。正規表現の基本的な使い方例えば、「S」で始まる単語を抽出したい場合は、次のようにC#で正規表現を使用します。コード例using System; using System.Tex

  2. Java 9のコンパクト文字列(Compact Strings)とは?仕組みと内部実装の変化を解説

    コンパクト文字列(Compact Strings)の概要Java 9以降、JVMはコンパクト文字列(Compact Strings)と呼ばれる新機能によって、文字列のメモリ使用量を最適化するようになりました。従来のchar[]配列の代わりに、文字列をbyte[]配列として表現できるようになったのが最大の特徴です。エンコーディングにはUTF-16またはLatin-1(ISO-8859-1)が使用され、これにより1文字あたり1バイトまたは2バイトで文字を格納できます。JVMがその文字列にISO-8859-1/Latin-1の範囲内の文字のみが含まれていることを検出した場合、内部的には1文字あたり1