デリゲートとは
delegate=変数として定義することができる関数
-
関数=動作させることしかできない
-
変数=上書き・変更ができる
関数は「動的な変更はできない」変数は「動的な変更ができる」
関数を変数に入れて,動的な変更ができる仕組み
デリゲートで出来ること
主にできることは2つ
-
動的な処理を動的に変更できる(代入・上書き・削除)
-
メソッド後にメソッドを動作させる(コールバック処理)
「関数の動的な変更」と「コールバック処理」をマスターしよう
デリゲートの書き方
例文を解説
-
「intを引数にしてvoidを返すメソッド」の関数をMethodParamと名付け,定義する
-
「定義した関数」をxと名付け,変数として定義し,中身は入れない
delegate void MethodParam(int name)
private MethodParam x = null;
「関数の型を定義」+「変数として定義」の2つの定義
関数の「変数的な演算」
関数の変数が左辺の時,独特の挙動をする
-
=(イコール)▶︎関数を上書きする
-
+= (プラス,イコール) ▶︎左側の関数動作後,右の関数を動作させる
-
変数() (メソッドの()をつける)▶︎そのタイミングで動作させる
普通の関数も
-
デリゲート関数の変数 += 関数名(名前だけ足す)▶︎関数名を後に起動する
「独特な演算」を理解しよう
コールバックの仕組み
要するに
-
処理▶︎デリゲート関数▶︎デリゲート関数の変数▶︎起動 (コールバック処理)
-
処理▶︎デリゲート関数▶︎デリゲート関数の変数▶︎上書き・代入
関数を「処理」と「起動」に分けること
デリゲートの種類
定義が2行から1行になる
public event Action<string> MethodHandler;
-
Action ▶︎戻り値がないデリゲート
-
Func ▶︎戻り値があるデリゲート
デリゲートを具体的にすることで「1文減らしている」
コメントを残す