2016-06-19 22 views
0

で匿名メソッドを呼び出すことはできません。C#のイベントは、私はこのコードを持って正しい引数値

問題がRoption.DropDownItems.Add関数が呼び出されiの値、ドロップダウン項目がクリックされたに関係なく、Resetに渡される引数は、7(ループが終了した後iの値)であるということではありません。この現象の原因は何ですか?また、どのように修正できますか? (私は実際には0以外の7つのステートメントで6をハードコードしたくない)。

+1

この 'I1 = i'のような変数' i'のコピーを作成し、代わりの方法をリセットするために 'i1'を渡す... http://stackoverflow.com/questions/271440/captured-variable -in-a-loop-in-c-sharp –

+0

それはうまくいきます、ありがとう! – limits

答えて

2

ここでの問題は、ループ内でデリゲートを作成するときに、すべてのオブジェクトが参照渡しされることです。これは、値型オブジェクトでも参照型オブジェクトでも、参照によって渡されます。

あなたのコードはどういう意味ですか?さて、ループが繰り返されると、iのコピーを持つResetメソッド呼び出しのすべてに同じものへの参照があります。したがって、iの値が増加すると、すべての単一参照の値も増加します。

Closures Explained

関連する問題