具有相同变量的嵌套循环¶
ID: cs/nested-loops-with-same-variable
Kind: problem
Security severity:
Severity: warning
Precision: high
Tags:
- maintainability
- correctness
- logic
Query suites:
- csharp-security-and-quality.qls
内部循环不应写入外部循环的迭代变量。如果内部循环更改了外部循环的迭代变量,则通常是因为程序员错误地输入了内部循环的迭代变量。如果这是预期行为,则这是一个不良做法的示例。循环的设计应该使每个循环都控制自己的迭代。迭代在循环之间共享的嵌套循环更难以理解和维护。
建议¶
如果代码中有错误,请更正。如果这是预期行为,请考虑重新设计循环迭代的控制方式。这将使其他程序员更容易理解和维护代码。
示例¶
此示例将永远运行,因为内部循环递增的是 i 而不是 j。
class NestedLoopsSameVariable
{
static void Main(string[] args)
{
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; i++)
{
Console.WriteLine(i + " " + j);
}
}
}
}
参考¶
MSDN:for。