LoginSignup
21
18

More than 5 years have passed since last update.

[C#] デリゲートの書き方の進化

Posted at

 プロ生勉強会第45回@名古屋 にてC#のバージョンによる書き方の変化というお話があったので、そのデリゲートに関する部分のまとめ。

 最初はこうだった(C# 1.0)

delegate int TestDelegate(int a, int b);

static void Main()
{
    TestDelegate del = new TestDelegate(DoSomething);
    del(2, 3);
}

static int DoSomething(int a, int b)
{
    return a + b;
}

 newが必要なくなった(C# 2.0)

TestDelegate del = DoSomething;

 匿名メソッドが使えるようになった(C# 2.0)

TestDelegate del = delegate (int a, int b) { return a + b; };

 みんな大好きラムダ式!!!(C# 3.0)

TestDelegate del = (int a, int b) => { return a + b; };

 returnだけの場合は{}とreturnが省略できるので...

TestDelegate del = (int a, int b) => a + b;

 型は省略できるので...

TestDelegate del = (a, b) => a + b;

 結果

delegate int TestDelegate(int a, int b);

static void Main()
{
    TestDelegate del = new TestDelegate(DoSomething);
    del(2, 3);
}

static int DoSomething(int a, int b)
{
    return a + b;
}

  ↓

delegate int TestDelegate(int a, int b);

static void Main()
{
    TestDelegate del = (a, b) => a + b;
    del(2, 3);
}

 なんということでしょう。

 まとめ

 C#はいいぞ

21
18
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
21
18