定義済みデリゲートを使うことで、デリゲート型の定義が不要になる。
戻り値のない関数を扱う場合は、Action<T>を使う。
https://docs.microsoft.com/ja-jp/dotnet/api/system.action-1?view=netframework-2.0
delegateのトピックで作った、文字列を括弧で囲んだ文字列を返すデリゲートを、まずは戻り値をvoidにして、出力するだけにする。
using System;
delegate void BracketsDelegate(string message);
class MainClass
{
static void Main()
{
BracketsDelegate brackets1 = new BracketsDelegate(Brackets1);
BracketsDelegate brackets2 = new BracketsDelegate(Brackets2);
brackets1("ABCDE");
brackets2("XYZ");
}
static void Brackets1(string message)
{
Console.WriteLine("(" + message + ")");
}
static void Brackets2(string message)
{
Console.WriteLine("<" + message + ">");
}
}
newを使わない新しいデリゲート構文にする。
using System;
delegate void BracketsDelegate(string message);
class MainClass
{
static void Main()
{
BracketsDelegate brackets1 = Brackets1;
BracketsDelegate brackets2 = Brackets2;
brackets1("ABCDE");
brackets2("XYZ");
}
static void Brackets1(string message)
{
Console.WriteLine("(" + message + ")");
}
static void Brackets2(string message)
{
Console.WriteLine("<" + message + ">");
}
}
最後に、デリゲート型の定義を削除し、Action<T>を使う。
(ABCDE)
<XYZ>
続行するには何かキーを押してください . . .
結果は変わらない。
Sample/dotnet/Action_T/Action_T/src/Action_T_ at master · bg1bgst333/Sample · GitHub