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

C#のデリゲートとは?宣言方法と基本的な使い方をサンプルコードで解説

C#におけるデリゲート(delegate)とは、メソッドへの参照を保持するための仕組みです。デリゲートは参照型の変数であり、メソッドへの参照を格納します。この参照は実行時に変更することも可能です。

デリゲートの主な用途

デリゲートは、特に以下のような場面で活用されます。

  • イベントの実装
  • コールバックメソッドの実装

なお、すべてのデリゲートは暗黙的に System.Delegate クラスから派生しています。

デリゲートの宣言方法

C#でデリゲートを宣言するには、次のような構文を使用します。

delegate <戻り値の型> <デリゲート名> <パラメータリスト>

それでは、実際にC#でデリゲートをどのように扱うのか、具体例を見ていきましょう。

サンプルコード

次の例では、文字列を出力するための2つのメソッド(コンソールへの出力とファイルへの出力)を用意し、デリゲートを使って呼び出すメソッドを切り替えています。

using System;
using System.IO;
namespace DelegateAppl {
    class PrintString {
        static FileStream fs;
        static StreamWriter sw;
        // デリゲートの宣言
        public delegate void printString(string s);
        // コンソールに出力するメソッド
        public static void WriteToScreen(string str) {
            Console.WriteLine("The String is: {0}", str);
        }
        // ファイルに出力するメソッド
        public static void WriteToFile(string s) {
            fs = new FileStream("c:\\message.txt",
            FileMode.Append, FileAccess.Write);
            sw = new StreamWriter(fs);
            sw.WriteLine(s);
            sw.Flush();
            sw.Close();
            fs.Close();
        }
        // デリゲートを引数として受け取り、
        // 必要に応じてメソッドを呼び出すメソッド
        public static void sendString(printString ps) {
            ps("Hello World");
        }
        static void Main(string[] args) {
            printString ps1 = new printString(WriteToScreen);
            printString ps2 = new printString(WriteToFile);
            sendString(ps1);
            sendString(ps2);
            Console.ReadKey();
        }
    }
}

実行結果

上記のコードを実行すると、コンソールには次のように表示されます。

The String is: Hello World

コードのポイント

このサンプルでは、printString というデリゲート型を宣言し、Main メソッド内で WriteToScreenWriteToFile の2つのメソッドをそれぞれデリゲートに割り当てています。その後、sendString メソッドにデリゲートを渡すことで、同じ処理の中で異なる出力先のメソッドを柔軟に呼び分けられることがわかります。

このようにデリゲートを使うことで、メソッドそのものを引数として扱えるようになり、処理の柔軟性が大きく向上します。

  1. 【Swift】iPhoneアプリで2つのViewController間の通信を実現するシンプルなデリゲートの実装方法

    この記事では、デリゲート(Delegate)の基本概念と、実際にデリゲートを作成する手順について解説します。まずはデリゲートとは何かから見ていきましょう。 デリゲートとは? デリゲートとは、オブジェクト間の通信を指すシンプルな用語です。オブジェクト同士をつなぎ、互いに情報をやり取りするための基本的かつ効果的な仕組みとして、iOS開発で広く使われています。 デリゲートはどのように動作するのか? デリゲートはプロトコル(Protocol)を使って作成されます。イベントが発生し、他のクラスへ通知したいクラス内でプロトコルを宣言します。プロトコルには関数の宣言のみを記述し、その実体(処理の中身)は呼び

  2. Gmailのデリゲート(代理人)機能とは?追加・削除の設定方法を徹底解説

    Gmailのデリゲート(代理人)とは? Gmailでは、自分のアカウントに「デリゲート(代理人)」と呼ばれるユーザーを追加できます。デリゲートは、アカウント所有者に代わってメールの閲覧、送信、返信、削除などの操作を行える便利な機能です。家族や同僚、秘書など信頼できる相手にアクセス権限を付与することで、メール対応を委任できます。 デリゲートにできること デリゲートは、あなた宛てに届いたメールに対して送信や返信を行えます。デリゲートがメールを送信または返信する際には、その人のメールアドレスが表示されます。具体的には、以下の操作が可能です。 メッセージの閲覧 メッセージの送信・返信 メッセージの