C# の無名関数内の変数のスコープに疑問があります。
以下のプログラムを検討してください。
delegate void OtherDel(int x);
public static void Main()
{
OtherDel del2;
{
int y = 4;
del2 = delegate
{
Console.WriteLine("{0}", y);//Is y out of scope
};
}
del2();
}
私の VS2008 IDE は次のエラーを出します: [練習は名前空間練習内のクラスです]
1. エラー CS1643: すべてのコード パスが型 'Practice.Practice.OtherDel' の匿名メソッドで値を返すわけではありません 2. エラー CS1593: デリゲート 'OtherDel' は '0' 引数を取りません。
int 変数 y がdel2 定義のスコープ内にあることは、本で説明されています: Illustrated C# 2008(Page 373) 。次に、これらのエラーの理由。