C#のdelegateを解説。基本構文やできることは?

C#のdelegateについて、できることや実際の例文を元に解説していきます。delegateはメソッドの処理において重要な役割を果たしてくれるので、ぜひ覚えておきましょう。
- プログラマー
- C#のdelegateとは何をするためにあるのでしょうか?
- プロジェクト
マネージャー - delegateはそもそも直訳すると「委任」「代表」という意味になります。その上でdelegateについて理解していきましょう。
C#のdelegateとは?
C#のdelegateは、ひとことでまとめると「メソッドを格納する変数の型」です。通常変数は文字列や数値といった一つの情報を格納しますが、delegate型を使って変数定義をするとメソッドを格納することができます。
厳密にはメソッドそのものを格納するのではなくメソッドの場所を格納しているのですが、delegateを使う上ではメソッドを格納しているという認識でも問題ないでしょう。また、delegateが持つことのできるメソッドは一つだけではなく、複数格納できることが特徴です。
delegateを使うと何ができるのか?
メソッドを格納するということは、その変数がメソッドであるかのように扱うことができます。
通常メソッドを呼び出すときはそのメソッド名を宣言して呼び出すでしょう。しかしdelegateは、delegate型の変数名を宣言することで、その変数に格納してあるメソッドを間接的に呼び出すことができるのです。
メソッド名でよいのではないかと思われるかもしれませんが、delegateのメリットは複数のメソッドを格納できるというところにあります。
例:
処理中にある条件1をクリアしたら処理の最後にメソッドAを呼び出す。
処理中さらに条件2もクリアしていたら処理の最後にメソッドBを呼び出す。
このような処理があったときに、条件をクリアしたら最後に呼び出したいメソッドをdelegate型の変数にまとめておき、最後にそのdelegate型の変数を呼び出せば処理したいメソッドをまとめて実行することが可能になります。
C#のdelegateの基本構文と実装例
それでは実際にdelegateを使ってみましょう。
delegateの基本構文
delegateを使用するにはまず、メソッドと同様に戻り値や引数を定義する必要があります。
===============
【delegateの基本構文】
1 |
delegate 戻り値の型 デリゲート型名(引数); |
===============
戻り値の型や引数は必要なければ記述しなくても大丈夫です。
delegateの実装例
実際にメソッドを格納し、呼び出してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
using System; //まずデリゲート型を定義します delegate void DelegetName(string s); class TestClass { //格納したいメソッドを定義します static void MethodA(string str) { Console.write(“あなたの名前は” + str + ”です”); } public static void main() { //デリゲート型の変数を宣言し、newでメソッドを格納します。 DelegetName d = new DelegetName(MethodA); //デリゲート型の変数名を呼び出します。 d(“山田太郎”); } } |
実行結果
1 |
あなたの名前は山田太郎です |
- プログラマー
- delegateの使い方がわかりました!
- プロジェクト
リーダー - delegateは複数のメソッド処理においてとても便利に使うことができます。ぜひマスターしておきましょう。
Delegateはメソッドを格納して処理を一任することができる変数
長い処理の中でいくつものフラグ用変数を用意しておくのは、コード量が増えて後々の改修作業も大変になってしまいます。
delegateはそんな問題を解決できる便利な変数型なので、これを機にコードに実装してみてはいかがでしょうか。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅)システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅)デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅)デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅)基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅)基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)