何が違うのか知りたいのですが。現在私はこのことを学んでおり、これらはまったく同じであるように私には思えます:
delegate void X();
X instanceOfX;
instanceOfX = delegate() { code };
instanceOfX = () => { code };
また、ラムダの方が新しい場合は、ラムダを使用して無名メソッドを忘れるだけですか?
はい、ラムダ式は非常に特別な匿名メソッドです。
ただし、いくつかの深い違いがあります。 Eric Lippertの ラムダ式と匿名メソッドの比較、パート1 から始めて、残りの series に進みます。
唯一の違いは、ラムダをExpression<Func<void>>
に簡単にキャストできることです。デリゲートは純粋にメソッド/クロージャですが、ラムダも式ツリーに分解できます。
Expression<Func<int, int>> expr = x => x*2; // Expression tree
Func<int, int> fun = x => x*2; // function
delegate int MyDelegate(int x);
MyDelegate del = x => x*2; // Same as function, delegate