c# - for 循环参数是否执行每次迭代?

标签 c# performance for-loop parameters reverse

在某些时候,我想在创建数组时随机化是否反转数组。

我想到的第一件事是:

bool reverse = Random.value > 0.5f;
for (
        int i = reverse ? steps - 1 : 0; 
        reverse ? i >= 0 : i < steps; 
        i += reverse ? -1 : +1
    ) {
    rotateScript.angles.Add(angleRange[0] + stepAdder * i);
}

后来我意识到尽管多行,if/else 中的两个 for 循环会更具可读性。

但问题仍然存在:这些三元条件是每次迭代都执行一次,还是只执行一次?

最佳答案

正确,for 语句的第二个和第三个组件在每次迭代中都被评估。

这个:

for( x; y; z ) a;

相当于:

x;
while( y ) { a; z; }

因此 y 将比 z 多计算 1 次。

关于c# - for 循环参数是否执行每次迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998498/

相关文章:

c++ - FFMpeg vs. OpenCV 格式转换/简单转换

performance - 如何忽略 JMeter 中的登录和注销请求?

javascript - 为什么使用 window.variable 访问变量速度较慢?

c# - System.Device.Location.GeoCooperativeWatcher.Position.Location.Speed 始终为 NaN

c# - 如何优化 "real-time"C#写文件和MATLAB读文件操作

c# - NodaTime 中的 OffsetTime

c# - 托管类型 C++

java - 如何在循环中分配多个相同的字符串?

javascript - 如何使用 JavaScript 数组通过 for 循环一次性检索 JSON 对象的值

python - 在循环期间更改可迭代变量