カテゴリ: C# 更新日: 2025/12/19

C#の匿名メソッド(delegateキーワード)をやさしく理解しよう!初心者向け完全解説

C#の匿名メソッド(delegateキーワード)を理解しよう
C#の匿名メソッド(delegateキーワード)を理解しよう

先生と生徒の会話形式で理解しよう

生徒

「C#のコードを見ていたら、delegateって書いてある不思議な書き方がありました。あれは何ですか?」

先生

「それは匿名メソッドと呼ばれる書き方です。名前を持たないメソッドを、その場で作れる仕組みなんですよ。」

生徒

「名前がないメソッドなんて、必要なんですか?」

先生

「はい。短い処理を一時的に使いたいときに、とても便利です。では、基本から順番に見ていきましょう。」

1. 匿名メソッドとは何か?

1. 匿名メソッドとは何か?
1. 匿名メソッドとは何か?

C#の匿名メソッドとは、名前を付けずに定義する特別なメソッドのことです。 通常のメソッドは名前を決めてから使いますが、匿名メソッドは「その場限りの処理」として使われます。

プログラミング初心者の方は、「名前がないと使えないのでは?」と感じるかもしれません。 しかしC#では、デリゲートという仕組みを使うことで、名前のないメソッドでも安全に扱えます。

例えるなら、匿名メソッドは「付せんに一言メモを書いて、一時的に机に貼る」ような存在です。 ノートに正式に書くほどではないけれど、今だけ使いたい情報を手軽に残せます。

2. delegateキーワードの役割

2. delegateキーワードの役割
2. delegateキーワードの役割

匿名メソッドを理解するためには、delegate(デリゲート)という言葉を知る必要があります。 デリゲートとは、「メソッドを入れておける箱」のようなものです。

普通の変数には数値や文字を入れますが、デリゲートには処理そのものを入れます。 そして、あとからその処理を実行できます。

delegateキーワードは、「ここにメソッドの処理を書きますよ」という合図になります。 匿名メソッドでは、このキーワードを使って、その場で処理内容を定義します。

3. 匿名メソッドの基本的な書き方

3. 匿名メソッドの基本的な書き方
3. 匿名メソッドの基本的な書き方

それでは、C#で匿名メソッドを使った簡単な例を見てみましょう。 ここでは「文字を表示する処理」を匿名メソッドとして定義します。


delegate void MessageDelegate();

MessageDelegate showMessage = delegate ()
{
    Console.WriteLine("こんにちは、匿名メソッドです。");
};

showMessage();

最初にdelegate void MessageDelegate();と書いています。 これは「戻り値がなく、引数もない処理を入れられる箱」を作っている状態です。

次に、delegate () { ... }の部分が匿名メソッドです。 メソッド名がなく、直接処理内容だけが書かれているのが特徴です。


こんにちは、匿名メソッドです。

4. 引数を持つ匿名メソッド

4. 引数を持つ匿名メソッド
4. 引数を持つ匿名メソッド

匿名メソッドは、引数を受け取ることもできます。 引数とは、処理を実行するときに渡す「追加の情報」のことです。

例えば、「数字を受け取って画面に表示する」処理を考えてみましょう。


delegate void NumberDelegate(int number);

NumberDelegate showNumber = delegate (int number)
{
    Console.WriteLine("受け取った数字は " + number + " です。");
};

showNumber(10);

受け取った数字は 10 です。

このように、匿名メソッドでも通常のメソッドと同じように引数を使えます。 名前がないだけで、できることはほとんど変わりません。

5. なぜ匿名メソッドを使うのか?

5. なぜ匿名メソッドを使うのか?
5. なぜ匿名メソッドを使うのか?

「普通にメソッドを作ればいいのでは?」と感じる方も多いでしょう。 匿名メソッドが役立つのは、一度しか使わない短い処理です。

何度も使う処理に名前を付けるのは大切ですが、 一回しか使わない処理まで名前を付けると、コードが読みにくくなります。

匿名メソッドを使えば、処理の内容をその場で確認でき、 「この場所専用の処理なのだ」とすぐに分かります。 これが、C#で匿名メソッドが用意されている理由です。

6. 匿名メソッドとラムダ式の関係

6. 匿名メソッドとラムダ式の関係
6. 匿名メソッドとラムダ式の関係

C#では、匿名メソッドの考え方をさらに簡単に書けるラムダ式という仕組みがあります。 ラムダ式は、匿名メソッドを短く書いた形だと考えて問題ありません。

ただし、内部的な考え方は同じでも、まずは 「delegateキーワードを使った匿名メソッド」 を理解しておくと、C#の仕組みがしっかり身につきます。

基礎を押さえることで、後から出てくる新しい書き方も、無理なく理解できるようになります。

カテゴリの一覧へ
新着記事
New1
C#
C#のメモリ管理とガーベジコレクションの基礎を理解しよう
New2
C#
C#の参照型と値型の違いを初心者向けにやさしく解説!
New3
C#
C#のクエリ式とメソッド式の書き換え方を完全ガイド!LINQの2つの書き方をマスター
New4
C#
C#の戻り値にタプルを使う方法!複数の値を返すテクニック
人気記事
No.1
Java&Spring記事人気No1
C#
C#で文字列が数値か判定する方法を解説!char.IsDigitやTryParseの基本
No.2
Java&Spring記事人気No2
C#
C#のLINQでOrderByを使った並び替えを完全ガイド!初心者でもわかるソート方法
No.3
Java&Spring記事人気No3
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.4
Java&Spring記事人気No4
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.7
Java&Spring記事人気No7
C#
C#のラムダ式の書き方と構文を初心者向けに完全解説
No.8
Java&Spring記事人気No8
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方