Action<T>

定義済みデリゲートを使うことで、デリゲート型の定義が不要になる。
戻り値のない関数を扱う場合は、Action<T>を使う。

https://docs.microsoft.com/ja-jp/dotnet/api/system.action-1?view=netframework-2.0

delegateのトピックで作った、文字列を括弧で囲んだ文字列を返すデリゲートを、まずは戻り値をvoidにして、出力するだけにする。

// 名前空間の登録
using System;       // 共通データ型と基本クラス(System名前空間)

// デリゲートの定義.
delegate void BracketsDelegate(string message);   // 引数がstringで戻り値のない関数を持つデリゲートBracketsDelegate.

// メインクラス
class MainClass // MainClassクラスの定義
{

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // デリゲートの生成.
        BracketsDelegate brackets1 = new BracketsDelegate(Brackets1);       // newでBracketsDelegateのbrackets1を生成.(コンストラクタにはBrackets1を渡す.)
        BracketsDelegate brackets2 = new BracketsDelegate(Brackets2);       // newでBracketsDelegateのbrackets2を生成.(コンストラクタにはBrackets2を渡す.)

        // デリゲートの参照でコールバックメソッドが呼ばれる.
        brackets1("ABCDE");  // brackets1に"ABCDE"を指定すると. コールバックメソッドのBrackets1が呼ばれる.
        brackets2("XYZ");    // brackets2に"XYZ"を指定すると, コールバックメソッドのBrackets2が呼ばれる.

    }

    // 括弧('('と')')で囲んで出力する場合のメソッドBrackets1.
    static void Brackets1(string message)
    {

        // 括弧で囲んだ文字列を出力.
        Console.WriteLine("(" + message + ")"); // messageを括弧で囲んだ文字列を出力.

    }

    // タグ('<'と'>')で囲んで出力する場合のメソッドBrackets2.
    static void Brackets2(string message)
    {

        // タグで囲んだ文字列を出力.
        Console.WriteLine("<" + message + ">"); // messageをタグで囲んだ文字列を出力.

    }

}

newを使わない新しいデリゲート構文にする。

// 名前空間の登録
using System;       // 共通データ型と基本クラス(System名前空間)

// デリゲートの定義.
delegate void BracketsDelegate(string message);   // 引数がstringで戻り値のない関数を持つデリゲートBracketsDelegate.

// メインクラス
class MainClass // MainClassクラスの定義
{

    // メインメソッド
    static void Main()  // Mainメソッドの定義
    {

        // デリゲートの生成.
        BracketsDelegate brackets1 = Brackets1;       // 新しいデリゲート構文(newではなく関数を直接指定.)でbrackets1を生成.
        BracketsDelegate brackets2 = Brackets2;       // 新しいデリゲート構文(newではなく関数を直接指定.)でbrackets2を生成.

        // デリゲートの参照でコールバックメソッドが呼ばれる.
        brackets1("ABCDE");  // brackets1に"ABCDE"を指定すると. コールバックメソッドのBrackets1が呼ばれる.
        brackets2("XYZ");    // brackets2に"XYZ"を指定すると, コールバックメソッドのBrackets2が呼ばれる.

    }

    // 括弧('('と')')で囲んで出力する場合のメソッドBrackets1.
    static void Brackets1(string message)
    {

        // 括弧で囲んだ文字列を出力.
        Console.WriteLine("(" + message + ")"); // messageを括弧で囲んだ文字列を出力.

    }

    // タグ('<'と'>')で囲んで出力する場合のメソッドBrackets2.
    static void Brackets2(string message)
    {

        // タグで囲んだ文字列を出力.
        Console.WriteLine("<" + message + ">"); // messageをタグで囲んだ文字列を出力.

    }

}

最後に、デリゲート型の定義を削除し、Action<T>を使う。


(ABCDE)
<XYZ>
続行するには何かキーを押してください . . .

結果は変わらない。

Sample/dotnet/Action_T/Action_T/src/Action_T_ at master · bg1bgst333/Sample · GitHub