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