重複
の可能性: C# - foreach 識別子とクロージャー
Eric Lippert のブログより: 「ループ変数を閉じないでください」</a>
ThreadStart
Threadクラスを使用して新しいスレッドでメソッドを実行するために、パラメーターとしてラムダ式を使用しています。これは私のコードです:
delegate void del();
static void Do(int i)
{
Console.WriteLine(i);
}
static del CreateLoop(del Do)
{
return () =>
{
while (true)
{
Do();
Thread.Sleep(500);
}
};
}
static void Main(string[] args)
{
int n = 0;
var loop = CreateLoop(() => Do(n));
new Thread(() => loop()).Start();
Thread.Sleep(500);
n = 1;
}
そして、これは出力です:
0
1
1
1
...
それはどのように可能ですか?
整数変数 の値を変更すると、 (のパラメータ) のn
値も変更されるのはなぜですか?i
Do