Do sau (rất nhiều chỉnh sửa, pseudo-) mã:Tại sao resharper đề xuất "biến bọc trong mảng" để truy cập vào cảnh báo đóng cửa đã sửa đổi?
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 cung cấp một cảnh báo trên đếm - "Tiếp cận đóng cửa sửa đổi". Tôi hiểu tại sao tôi nhận được cảnh báo này (biến đếm được sửa đổi trong hai lambdas khác nhau, và có khả năng có ngữ nghĩa không mong muốn), nhưng tôi không hiểu lời khuyên của ReSharper: "Wrap biến cục bộ trong mảng". Nếu tôi cho phép ReSharper thực hiện việc này, tôi nhận được:
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]);
Và không cảnh báo.
Tại sao sử dụng mảng an toàn?
Bạn đã thấy phiên bản ReSharper này trong phiên bản nào? –