所以,如果我有这样的表达:
if (obj != null && i++ % divisor == 0)
{
....
}
and obj
is null
, theni
永远不会增加。如果我使用
i++;
if (obj != null && i % divisor == 0)
{
....
}
相反,然后,当然i
是递增的。
这是设计使然吗?我从优化的角度理解短路评估,但我(错误地)假设编译器会识别后增量表达式并无论如何都对其进行评估。
(如果这在规范中,我找不到它 - 只是在这里寻找一些(喘气)意见。)
更新
这是实际的代码。
private int _frameNumber = 0;
private void simulator_OnFrameEnd(object sender, System.EventArgs e)
{
_frameNumber++;
if (_visualizer != null && _frameNumber % _config.VisualizerUpdateFrequency == 0)
{
var field = _simulator.GetField(_config.PreviewField);
_visualizer.Update(field, _simulator.FrameTime);
}
if (_frameNumber % _config.OptimizerRegridFrequency == 0)
{
_simulator.UpdateFieldGrids();
}
}