C♯, C#相談室 Part38
■ このスレッドは過去ログ倉庫に格納されています
0011デフォルトの名無しさん
2007/03/14(水) 12:50:21foreach (TestDelegate method in methods) {
new Thread(delegate() {method();}).Start();
}
}
こういう関数を書いてみたんですが、このままではリストの最後の要素しか呼ばれません。
で
foreach (TestDelegate method in methods) {
TestDelegate m = method;
new Thread(delegate() {m();}).Start();
}
としたところちゃんと全部呼ばれるようになりました。
匿名デリゲートからローカル変数にアクセスする場合デリゲートをnewした時点で
ローカル変数が外部にコピーされると思っていたのですが、
それだと上の方法でも動きそうに思うのですが、なぜ動かないのでしょうか。
そもそもmとmethodは同じスコープの変数なので
同じように振舞うべきのような気がするのですが。
■ このスレッドは過去ログ倉庫に格納されています