.net column

.NET開発者のためのブログメディア
関数のイメージ

C#のActionの使い方。Funcとの違いやデリゲートの解説

2020年09月23日

デリゲートを初めて聞いたという方も、ファンクション(Function)は何となく聞き覚えがあるのではないでしょうか。何となく「関数が関連するのかな?」と思った方、正解です。
この記事では、デリゲートの使い方やActionとFuncの違いについてご紹介しますので、ぜひ参考にしてみてください。

PG
デリゲートを介して関数を呼び出して欲しいといわれたのですが、さっぱり分かりません。どのように実装すればよいのでしょうか?
PL
関数の扱い方の前にまず、デリゲートについて理解していくところから始めてみようか。

実行環境
・Windows 10 Home
・Visual Studio Community 2019

C#のデリゲートとは?

C#のデリゲートとは、メソッドを参照できる関数ポインタのような型です。
デリゲート型は以下のような形式で定義します。

デリゲート型と同じ引数、戻り値となるメソッドであれば、デリゲート名に代入することができます。難しく考える前に、まずはサンプルコードを見てみましょう。

デリゲート型と同じ引数、戻り値となるため、★の位置で、GetLeftStrメソッドとGetRightStrメソッドが代入できています。
設定されたメソッドに応じた結果(文字列)が出力されていることも確認できました。

Actionの使い方

先ほど紹介したデリゲートでは、デリゲート型で変数を宣言してからメソッドを代入していましたが、何も返さないメソッドの場合、Actionで定義できます。

デリゲート型の変数を明示的に宣言せず、Actionを使用してメソッドが呼び出せています。

FuncとActionの違い

Funcとは、デリゲートの宣言をシンプルにしたものと考えてください。引数は最大16個まで指定可能です。

また、Actionも引数を与えることが可能ですが、FuncとActionの違いとしては、戻り値の有無となります。Actionでは戻り値がありません。

それでは、前項で示したデリゲート型を使用したサンプルコードを、Funcに置き換えてみましょう。

デリゲート型の変数を明示的に宣言せず、Funcを使用してメソッドが呼び出せています。

PG
なるほど、関数の呼び出しはこのように実装するのですね!勉強になりました。今回はActionを使おうと思います。
PL
理解してもらえたようで良かったです。デリゲートは難しいかもしれません。実際にコードを作成して、より理解を深めてみると良いでしょう。

ActionとFuncの違いを理解して使いこなそう

今回は、デリゲートの使い方やActionとFuncの違いを紹介しました。関数を変数のように扱えるイメージなので最初は戸惑うかもしれませんが、使いこなせば便利な機能になると思います。デリゲートの基本からこの機会に使い方を覚えて、これからのコーディングに生かしてみてください。

>>>C#の案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)