delegateで引数を使わない場合

よく忘れるのでメモ。

using System;

delegate bool Less(int x, int y);

class Program 
{
    static void Main()
    {
        Less less1 = delegate (int x, int y) { return x < y; };
        Less less2 = delegate (int x, int y) { return false; };

        // 引数を使わない場合は省略可能
        Less less3 = delegate { return false; };
        /* 生成されたコード
        [CompilerGenerated]
        private static bool <Main>b__2(int, int)
        {
            return false;
        }
        */
    }
}

delegateに引数があったとしても、メソッド本体で引数を使わない場合は引数を省略できるんですよね。何故か、忘れることが多いです。(^^;
あと、C#では仮引数は省略できませんが。自動生成されたコードは省略されています。考えてみればC++は省略可能なのでIL上では認められているんでしょう。