デリゲートの考え方(3)
デリゲートの考え方(2)では、引数を1つ持つメソッドを見てきました。今回は、さらに進んで、引数を2つ持つメソッドについて考えます。
public void Kick(string str1, string str2)
{
Console.WriteLine($"{str1}と{str2}のキック");
}
このメソッドのタイプは、どのようなものでしょうか?
- 戻り値がありません。
- 引数が2つ(string型が2つ)
このパターンですね。
次も同じパターンです。
public void Punch(string str1, string str2)
{
Console.WriteLine($"{str1}と{str2}のパンチ");
}
変数を使う場合、まず、宣言が必要でしたね。
型名 変数名;
デリゲートに当てはめると、
Action<string, string> attack;
Actionが型名、attackが変数名です。(Action型は、戻り値がない場合のメソッドを指しています)
string型の引数が2つ必要なので<string, string>の2つを用意します。
変数が宣言できたので、代入してみます。
attack = Kick;
呼び出しは、
attack(“falcon", “raptor");
となります。
また、+=演算子で、同時に複数のメソッドw追加することもできます(マルチキャストデリゲート)
attack += Punch;
まとめると、
class Player
{
public void Kick(string str1, string str2)
{
Console.WriteLine($"{str1}と{str2}のキック");
}
public void Punch(string str1, string str2)
{
Console.WriteLine($"{str1}と{str2}のパンチ");
}
public void Combo()
{
Action<string, string> attack;
attack = Kick;
attack += Punch;
attack("falcon", "raptor");
}
}
表示
falconとraptorのキック
falconとraptorのパンチ
追記)このサンプルは、下記インスタンス化が必要です。
class Program
{
static void Main(string[] args)
{
Player falcon = new Player();
falcon.Combo();
}
}
ディスカッション
コメント一覧
まだ、コメントがありません