Por que o novo compartilhador sugere "agrupar variável na matriz" para acessar os avisos de fechamento modificado
Dado o seguinte código (pseudo-) fortemente editado:
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 fornece um aviso na contagem - "Acesso ao fechamento modificado". Entendo por que estou recebendo esse aviso (a variável count está sendo modificada em duas lambdas diferentes e provavelmente possui semânticas indesejáveis), mas não entendo o conselho do ReSharper: "Quebra variável local em array". Se eu deixar o ReSharper fazer isso, recebo:
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]);
E nenhum aviso.
Por que usar uma matriz segura?