English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Action デリゲート

ActionはSystemネームスペースで定義されたデリゲートタイプです。ActionタイプデリゲートはFuncデリゲートと同じですが、Actionデリゲートは値を返しません。別の言い方をすると、Actionデリゲートはvoid返り値を持つメソッドと一緒に使用できます。

Action泛用デリゲートとは何ですか

Action<T>は.NET Frameworkに組み込まれた汎用デリゲートであり、Action<T>デリゲートを使用してメソッドをパラメータ形式で渡すことができます。カスタムデリゲートを明示的に宣言する必要はありません。エンケapsulatingメソッドはこのデリゲートのメソッドシグネチャに対応する必要があります。つまり、エンケapsulatingメソッドは引数として値で渡される引数を持つ必要があり、戻り値を持たない必要があります。

例えば、以下のデリゲートはint値をプリントします。

public delegate void Print(int val);
static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}
static void Main(string[] args)
{           
    Print prnt = ConsolePrint;
    prnt(10);
}
出力:
10

上で定義したPrintデリゲートの代わりにActionデリゲートを使用できます。例えば:

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}
static void Main(string[] args)
{
    Action<int> printActionDel = ConsolePrint;
    printActionDel(10);
}

newキーワードを使用したり、直接メソッドを割り当てることでActionデリゲートを初期化できます:

Action<int> printActionDel = ConsolePrint;
//または
Action<int> printActionDel = new Action<int>(ConsolePrint);

Actionデリゲートは最大で16異なるタイプの入力引数を持ちます。

Actionデリゲートと匿名メソッド

匿名メソッドはActionデリゲートに割り当てられます。例えば:

static void Main(string[] args)
{
    Action<int> printActionDel = delegate(int i)
                                {
                                    Console.WriteLine(i);
                                };
    printActionDel(10);
}
出力:
10

Actionデリゲートとラムダ式

ラムダ式はActionデリゲートとともに使用できます:

static void Main(string[] args)
{
    Action<int> printActionDel = i => Console.WriteLine(i);
       
    printActionDel(10);
}

したがって、Actionデリゲートの返値を使用しない方法を使用することができます。

Actionデリゲートの使用例を説明します

  • Actionデリゲートは少なくとも0個、多くても16引数を持ち、値を返さない。

  • Action は、引数を持ちない、値を返さないデリゲートを示します。

  • Action<int, string> は、int、stringの引数を持ち、値を返さないデリゲートを示します。

  • Action<int, string, bool> は、int、string、boolの引数を持ち、値を返さないデリゲートを示します。

  • Action<int, int, int, int> は、引数を4つ受け取り、何も返さないことを示します。4個の int 型パラメータがあり、返り値のないデリゲートです。

Action と Func デリゲートの利点

  1. デリゲートを簡単かつ迅速に定義します。

  2. コードを短くします。

  3. アプリケーション全体で互換性のあるデータ型です。

覚えておくべきポイント

  1. Action デリゲートは Func デリゲートと同じですが、Action デリゲートは何も返さないため、返り値の型は void でなければなりません。

  2. Action デリゲートは0から16個の入力パラメータがあります。

  3. Action デリゲートは匿名メソッドやラムダ式と一緒に使用できます。