Csharp-delegates
C#-デリゲート
C#デリゲートは、CまたはC ++の関数へのポインターに似ています。 delegate は、メソッドへの参照を保持する参照型変数です。 参照は実行時に変更できます。
デリゲートは、特にイベントとコールバックメソッドの実装に使用されます。 すべてのデリゲートは、暗黙的に System.Delegate クラスから派生します。
デリゲートの宣言
デリゲート宣言は、デリゲートが参照できるメソッドを決定します。 デリゲートは、デリゲートと同じ署名を持つメソッドを参照できます。
たとえば、デリゲートを考えます-
上記のデリゲートを使用して、単一の_string_パラメーターを持ち、_int_型変数を返すメソッドを参照できます。
デリゲート宣言の構文は-
デリゲートのインスタンス化
デリゲートタイプが宣言されたら、デリゲートオブジェクトを new キーワードで作成し、特定のメソッドに関連付ける必要があります。 デリゲートを作成するとき、 new 式に渡される引数はメソッド呼び出しと同様に記述されますが、メソッドへの引数はありません。 たとえば-
次の例は、整数パラメーターを受け取り、整数値を返すメソッドを参照するために使用できるデリゲートの宣言、インスタンス化、および使用を示しています。
上記のコードをコンパイルして実行すると、次の結果が生成されます-
デリゲートのマルチキャスト
デリゲートオブジェクトは、「+」演算子を使用して構成できます。 構成された代理人は、構成された2人の代理人を呼び出します。 同じタイプの代理人だけが構成できます。 「-」演算子を使用して、合成デリゲートからコンポーネントデリゲートを削除できます。
デリゲートのこのプロパティを使用すると、デリゲートが呼び出されたときに呼び出されるメソッドの呼び出しリストを作成できます。 これは、デリゲートの*マルチキャスト*と呼ばれます。 次のプログラムは、デリゲートのマルチキャストを示しています-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
デリゲートを使用する
次の例は、デリゲートの使用方法を示しています。 デリゲート_printString_を使用して、文字列を入力として受け取り、何も返さないメソッドを参照できます。
私たちはこのデリゲートを使用して2つのメソッドを呼び出します。最初のメソッドは文字列をコンソールに出力し、2番目のメソッドはそれをファイルに出力します-
上記のコードをコンパイルして実行すると、次の結果が生成されます-