在 C/C#/C 中进行反向循环的最佳方法是什么?

新手上路,请多包涵

我需要向后移动一个数组,所以我有这样的代码:

 for (int i = myArray.Length - 1; i >= 0; i--)
{
    // Do something
    myArray[i] = 42;
}

有没有更好的方法来做到这一点?

更新:我希望也许 C# 有一些内置机制,比如:

 foreachbackwards (int i in myArray)
{
    // so easy
}

原文由 MusiGenesis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 839
2 个回答

虽然诚然有点晦涩,但我会说最令人愉悦的排版方式是

for (int i = myArray.Length; i --> 0; )
{
    //do something
}

原文由 Rune 发布,翻译遵循 CC BY-SA 2.5 许可协议

不是说 13 年多以后才重要,而只是为了教育目的和一些琐碎的学习;

原始代码是;

 for (int i = myArray.Length - 1; i >= 0; i--)
{
    // Do something
    myArray[i] = 42;
}

您真的不需要再次测试“i”是否大于或等于零,因为您只需要产生一个“假”结果即可终止循环。因此,您可以简单地执行此操作,仅测试“i”本身是否为真或假,因为当它达到零时它将(隐式)为假。

 for (int i = myArray.Length - 1; i; i--)
{
    // Do something
    myArray[i] = 42;
}

就像我说的那样,这并不重要,但了解 for() 循环内部发生的事情的机制很有趣。

原文由 RecursiveDude 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题