delegate

デリゲートは、簡単に言うとメソッドを格納する特殊なオブジェクトで、C言語の関数ポインタ、C++の関数オブジェクトのようなもの・・・。

delegate <戻り値型> <デリゲート名>(<引数型> <引数名>);

delegateをつけることで、このような引数型と戻り値型のメソッドを受け取れるデリゲートを定義できる・・・。

戻り値も引数もstringのデリゲートBracketsDelegateを定義する・・・。
これは、引数のmessageの先頭と末尾を括弧(といっても"(~)"とか"{~}"とか"[~]"とか"<~>"とかいろいろ・・・。)で括った文字列を返すメソッドを格納できる・・・。
で渡すメソッドによって括る文字を変えてみる・・・。

Brackets1は、messageを"("と")"で括る・・・。

Brackets2は、messageを"<"と">"で括る・・・。

デリゲートの生成は、こんな感じ・・・。
コンストラクタの引数には、実行するメソッドを渡す・・・。
brackets1は、Brackets1を実行するデリゲート・・・。
brackets2は、Brackets2を実行するデリゲート・・・。

ただ、これだけでは、渡したメソッドは実行されない・・・。

引数の"()"をデリゲートにつけて、中身(実行されるメソッド)が引数付きのメソッドなら引数も渡す・・・。そうすると参照され、渡したメソッドが実行される・・・。

でstr1, str2に括弧で括られた文字列が入ってるかどうか・・・。出力して確認・・・。

str1 = (ABCDE)
str2 = <XYZ>

こんな感じで渡したメソッドが実行されている・・・。

Sample/cs/delegate/delegate/src/delegate_ at master · bg1bgst333/Sample · GitHub