気が利かないやつめ・・

なぜか↓こいつは”未割り当てのローカル変数'n'が参照されました”というコンパイルエラーが出る。

using System;

namespace garu.test
{
    class test
    {
        delegate void callback();

        static void Main(string[] args)
        {
            int n;
            callback f2 = delegate { Console.WriteLine(n); };

            n = 100;
            f2();
        }
    }
}

問題になっているのはdelegateの中のnの読み出し。しかし、このdelegateを定義した時点ではこのf2は実行されていない。その後の100の代入をしたうえでf2()を実行しているのだ。
こういうのを見ると、”ははあ、所詮コンピュータだなあ”とちょっとほほえましく思う。人間みたいに色々と気が利くようになるのは、まだ先の話なんだろうだろうなあ。