デリゲートは、簡単に言うとメソッドを格納する特殊なオブジェクトで、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