プロ生勉強会第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#はいいぞ