あんま慣れてないのでいっつも忘れるのでメモ。
public void test() { //delegate使って匿名メソッドを定義 Func<int, int> x = delegate (int n) { return n * 10; }; Console.WriteLine(x(1)); //↑をラムダ式で x = (n) => { return n * 20; }; Console.WriteLine(x(1)); //↑をラムダ式でさらに簡素に x = (n => n * 30); Console.WriteLine(x(1)); //中身の匿名関数をラムダ式でその場で定義して var に入れる var y = new Func<int, int>(n => { return n * 40; }); Console.WriteLine(y(1)); //引数が複数の場合のdelegate Func<int, int, int> xx = delegate (int n, int nn) { return n * nn; }; Console.WriteLine(xx(1,10)); //引数が複数の場合のラムダ式 xx = (n, nn) => { return n * nn; }; Console.WriteLine(xx(1, 10)); //中身の匿名関数をラムダ式でその場で定義して var に入れる 引数複数版 var yy = new Func<int, int, int>((n,nn) => { return n * nn; }); Console.WriteLine(yy(1, 10)); //引数無しの場合のdelegate Func<int> xxx = delegate () { return 20; }; Console.WriteLine(xxx()); //引数が複数の場合のラムダ式 xxx = () => { return 20; }; Console.WriteLine(xxx()); //中身の匿名関数をラムダ式でその場で定義して var に入れる 引数複数版 var yyy = new Func<int>(() => { return 20; }); Console.WriteLine(yyy()); //Actionの場合 引数1個 Action<int> a = delegate (int n) { Console.WriteLine(n); }; a(30); a = (n) => Console.WriteLine(n); a(30); a = n => Console.WriteLine(n); a(30); //var b = new Action<int>(n => Console.WriteLine(n)); var b = new Action<int>( (n) => { Console.WriteLine(n); }); b(30); //Actionの場合 引数2個 Action<int,int> aa = delegate (int n,int nn) { Console.WriteLine(n*nn); }; aa(4, 10); aa = (n, nn) => { Console.WriteLine(n * nn); }; aa(4, 10); var bb = new Action<int, int>((n, nn) => { Console.WriteLine(n * nn); }); bb(4, 10); //Actionの場合 引数無し Action aaa = delegate () { Console.WriteLine(0); }; aaa(); aaa = () => { Console.WriteLine(0); }; aaa(); aaa = () => Console.WriteLine(0); aaa(); var bbb = new Action( () => { Console.WriteLine(0); } ); bbb(); }