C#

【C#】世界一わかるデリゲート(delegate)について

こんにちは、リバティエンジニア[?]のFUNAです。 現役エンジニアとしてアプリケーション開発やWeb制作、SEOやブログ運営をしています。

今回はC#における「デリゲート」について学習していきましょう!

「デリゲート」と聞くと、「難しい。」や「今まで何となくで乗り越えてきた。」という方が意外と多くいるのではないでしょうか?

そんな難しいイメージの「デリゲート」を今日でマスターしましょう!

デリゲート(delegate)とは

デリゲート (delegate) とは、C言語などでいうところの「関数ポインタ」のようなものなんです。

デリゲートは関数ポインタと同様で、

「こんな形(戻り値とパラメータ)のメソッドを呼び出しますよ」

ということだけ定義しておき、 メソッドの実体を実行時にセットすることができるものなんです。

どうしてこんな回りくどいことをするのでしょうか?
それは、「こんな型のメソッドを呼び出したい」ということだけ定義しておくと、メソッドの実体はあとでセットすることができます。

このようにしたほうが都合が良い場合がよくあるからなんです。

サンプルコード

文章で説明してもよくわかりませんよね。

私も、ながなが理論を説明されるよりも「早く実行させて!」というタイプなので、さっそくサンプルコードを紹介するので、実際に自分の環境で試してみてください!

using System;

namespace DelegateTest
{
    class SampleClass
    {
        // デリゲートの宣言
        public delegate void TestDelegate();
        public TestDelegate testDelegateMethode;

        public void Test()
        {
            if (testDelegateMethode != null)
            {
                testDelegateMethode();
            }
        }
    }
}

このようなDelegateTestというクラスがあったとします。

このクラスでは、デリゲートの宣言をおこなっています。
次に、このデリゲートを宣言しているクラスを使ってみましょう。

using System;

namespace SampleProgram
{
    class Program
    {
        static void Main(string[] args)
        {
            // 先ほど作ったデリゲートテストクラス
            DelegateTest writeTest = new DelegateTest();
            // デリゲートにメソッドを定義
            writeTest.testDelegateMethode = new DelegateTest.TestDelegate(SampleMethode);
            // メソッド呼び出し
            writeTest.Test();
        }
        // 実行するメソッド
        static void SampleMethode()
        {
            Console.WriteLine("これがデリゲートで呼ばれたメソッドです。");
        }
    }
}

これを実行してみてください。
デリゲートのTest()関数を呼び出しましたが、12行目でデリゲートに実行したいメソッドを指定しているので、17行目のSampleMethode()関数が呼ばれています。

今回はpublic delegate void TestDelegate();で引数も戻り値もないメソッドを呼べるように指定しています。

もし引数や戻り値を指定したい場合は、この行の記述を変えることでできますよ。

まとめ

今回は、C#でほとんどの方が躓くといっても過言でもない、「デリゲート(Delegate)」について解説しました。

これはすこしトリッキーな動きをするので、実際に動かしながら学習することをお勧めします!

C#2.0 で追加された「匿名メソッド」とは?

プログラミングはC#だけに限らず、実際にやってみることがとても大事です!なので、文章を読むだけで理解しようとするのは無理があるので、手を動かして一緒に学習していきましょう。


 

Kindle Unlimitedで無料で本が読める

 

Kindle Unlimitedを無料で試す

 

なら最初の30日間は無料でコーディング・デザイン・ブログ・英語・Youtubeの参考書・キャリア・副業・マーケティング・漫画・美容知識・雑誌などが読み放題です。

人気の本もあるので是非お試ししてみてください!30日以内に解約すればお金は全くかかりません。

 


最近の投稿

【今すぐ行動しよう】フリーランスエンジニアとブログの相性は抜群!

フリーランスエンジニアがスキルや経験から得たビジネスノウハウを共有する手段として「ブログ」は非常におすすめです。自身のスキルや知識のアウトプットや、実際に自分が経験したことを共有して同じような境遇の人の手助けになるような情報を公開することで自分に帰ってくるメリットは非常に多いです。今回はそのあたりについて紹介していきます。

【経験談】フリーランスのエンジニアは本当に大変なの?安定のコツやポイント

フリーランスのエンジニアは「大変だからやめとけ」という話をよく聞くので、そのことについて現役でフリーランスエンジニアとして生活している私が、その話の実態を解説しようと思います。フリーランスエンジニアの大変なところはもちろんありますが、それ以上にメリットが多いので私個人的には非常におすすめしています。

【幸福度UP】フリーランスエンジニアの「田舎暮らし」実現できます

フリーランスエンジニアとして田舎で暮らす人が増えてるって聞くけど、本当なのかな?どうやったら実現できるのか?今回はフリーランスエンジニアとして田舎で生活をしたいという方向けに、実現可能なのか、実現するにはどうすれば良いのかをご紹介します。

【単価交渉で収入アップ】フリーランスが単価交渉を成功させる4つのポイント

フリーランスが収入をアップさせるための重要な手段のひとつに「単価交渉」があります。今回は、現役でフリーランスとしてエンジニアをしている私が実践して効果のあった単価交渉の方法やコツをご紹介します。

【 今なら無料!】タスク管理ツール「Backlog」を無料で使う方法と手順

今回は、普段のタスク管理からプロジェクトの管理まで幅広く使えるツール「Backlog」を無料で使うための方法とその手段を画像つきで紹介しました。もし気に入らなければ、期間内に解約してしまえば費用はかかりません。また、以外と知られていない「フリープラン」も紹介しているので、是非参考にしてみてください。

Copyright© FUNA BLOG , 2021 All Rights Reserved.