0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

デリゲートの使用方法

Last updated at Posted at 2024-12-10

そもそもデリゲートとは?

 デリゲートを使うと、引数や戻り値にメソッドを与えたり、簡単にインスタンス化することができます。

 これまでは...

public static void SayHello(string name)
 {
  Console.WriteLine($"こんにちは、{name}さん。");
 }

 public static void main()
 {
  SayHello sayHello = new SayHello("太郎");
 }

のようにして引数に、変数を格納していたが、デリゲートを使うと、

1.簡単なインスタンス化

public delegate void DeligateHello(string name);

  public static void Greet(string name)
  {
   Console.WriteLine($"こんにちは、{name}さん。"); //①
  }
  
  public static void Main()
  {
   DeligateHello del = Greet;
   del("太郎"); //①を実行
  }

2.メソッドを引数に渡す方法 

public deligate void DeligateHello(string name);

  public static void Greet(string name)
  {
   Console.WriteLine($"こんにちは、{name}さん。"); //①
  }

  public static void Execute(DeligateHello del, string name)
  {
   del(name);
  }

  public static void Main()
  {
   DeligateHello del = Greet;
   Execute(del, "太郎");
  }

Point!
・まずは、デリゲートの定義(シグネチャ型)
ex) public void deligate Deli(string message);
・参照したいメソッドをインスタンス化
ex) Deli del = ShowMessage; ← ShowMessageメソッドをインスタンス化
・呼び出したい引数にデリゲートを渡す
*デリゲートを引数に渡したメソッド内で、デリゲートを通して参照元のメソッドを呼び出すことでマップできる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?