次(重く編集され、擬似)コードを考える:なぜresharperは変更されたクロージャの警告にアクセスするために "変数を配列でラップする"ことを提案しますか?
int count = 0;
thing.Stub(m => m.AddBlah()).WhenCalled(o => count++);
thing.Stub(m => m.RemoveBlah()).WhenCalled(o => count--);
DoStuff(thing);
Assert.AreEqual(1, count);
ReSharperのはカウントに警告を提供 - 「修飾閉鎖へのアクセスを」。私はなぜこの警告が出るのか理解しています(カウント変数は2つの異なるラムダで修正されており、望ましくないセマンティクスを持つ可能性があります)が、私はReSharperの助言を理解していません。私がReSharperにこれをさせるならば、私は得る:
int count[] = { 0 };
thing.Stub(m => m.AddBlah()).WhenCalled(o => count[0]++);
thing.Stub(m => m.RemoveBlah()).WhenCalled(o => count[0]--);
DoStuff(thing);
Assert.AreEqual(1, count[0]);
警告なし。
アレイを安全に使用するのはなぜですか?
どのバージョンのReSharperがこれに見えましたか? –