C#のActionとFuncデリゲートの基本と活用例を初心者向けに完全解説
生徒
「C#の勉強をしていたら、ActionとかFuncって言葉が出てきました。これは何ですか?」
先生
「ActionとFuncは、C#に用意されている特別なデリゲートです。メソッドを変数のように扱うための仕組みですよ。」
生徒
「メソッドを変数みたいに扱うって、どういうことですか?」
先生
「難しく聞こえますが大丈夫です。身近な例えを使いながら、ActionとFuncの基本からゆっくり説明していきましょう。」
1. デリゲートとは何かを超かんたんに理解しよう
C#のデリゲートとは、「メソッドを入れておける箱」のような仕組みです。 ふつう変数には数値や文字を入れますが、デリゲートには処理そのものを入れることができます。
たとえば「挨拶する処理」や「計算する処理」を、あとから呼び出せるように保存しておくイメージです。 この仕組みを使うと、プログラムが柔らかくなり、同じコードを何度も書かずにすみます。
2. Actionデリゲートとは?戻り値のない処理を表す
Actionデリゲートは、「何か処理をするけれど、結果を返さない」メソッドを表します。 「表示する」「ログを出す」「お知らせする」など、結果が不要な処理によく使われます。
Actionは、引数を受け取ることはできますが、最後に値を返しません。 この「返さない」という点が、初心者の方がまず覚えておく大切なポイントです。
Action showMessage = () =>
{
Console.WriteLine("こんにちは、C#のActionです。");
};
showMessage();
上の例では、「画面に文字を表示する処理」をActionに入れています。
こんにちは、C#のActionです。
3. 引数付きActionで処理を柔軟にする
Actionは、データを受け取って処理することもできます。 これを引数と呼びます。引数とは、処理に渡す材料のことです。
Action<string> greet = name =>
{
Console.WriteLine(name + "さん、こんにちは。");
};
greet("田中");
田中さん、こんにちは。
このようにActionを使うと、「表示する内容だけを後から変える」といった柔軟な書き方ができます。
4. Funcデリゲートとは?結果を返す処理を表す
Funcデリゲートは、Actionとは違い「処理をして、結果を返す」メソッドを表します。 計算結果を使いたいときや、判断した結果を受け取りたいときに使われます。
Funcの特徴は、最後の型が戻り値になる点です。 ここが最初は少しややこしく感じるかもしれません。
Func<int, int, int> add = (a, b) =>
{
return a + b;
};
int result = add(3, 5);
Console.WriteLine(result);
8
5. ActionとFuncの違いをイメージで理解しよう
ActionとFuncの違いはとてもシンプルです。
- Action:処理はするが、答えは返さない
- Func:処理をして、答えを返す
電話のアナウンスのように「伝えるだけ」ならAction、 電卓のように「計算して結果を出す」ならFuncと考えると分かりやすいでしょう。
6. ラムダ式と組み合わせるとコードが短くなる
ActionやFuncは、ラムダ式と一緒に使われることが多いです。 ラムダ式とは、処理を短く書くための記法です。
難しく感じる場合は、「短く書ける書き方」と覚えておけば大丈夫です。
Action sayHello = () => Console.WriteLine("Hello");
sayHello();
Hello
7. ActionとFuncがよく使われる場面
ActionとFuncは、ボタンを押したときの処理や、データを順番に処理するときなど、 さまざまな場面で使われます。
特に「処理だけを渡したい」「計算方法を後から変えたい」といった場合に力を発揮します。 この考え方を覚えると、C#のコードが一気に読みやすくなります。