RunningCSharp

MS系開発者による、雑多な記事。記事は所属企業とは関係のない、個人の見解です。

C#:refの引数を含むデリゲートに入れるラムダ式では型を省略できない話

文法に関する細かいメモ。

delegate void myDelegate(ref int test);

static void Main(string[] args)
{
    myDelegate del = (ref i) => i++;
}

上記のコードは構文エラーが出てしまいます。 引数にrefがある場合は、型を省略できないようです。

static void Main(string[] args)
{
    myDelegate del = (ref int i) => i++;
}

delegate void myDelegate(ref int test);

上記コードは正常にビルドが通ります。 略式の書き方に慣れすぎたせいか、ちょっと引っかかってしまいました…