C# for循环迭代器突然改变
这是我的方法,它只是一个嵌套循环:C# for循环迭代器突然改变,c#,unity3d,C#,Unity3d,这是我的方法,它只是一个嵌套循环: IEnumerator startNewRound() { string st = "آبپتثجچحخدذرضطظعغفقکگلمنوهی"; for (int i = 0; i < st.Length; i++) { for (int j = i + 1; i < st.Length; j++) { for (int z = j + 1; z < st.Len
IEnumerator startNewRound()
{
string st = "آبپتثجچحخدذرضطظعغفقکگلمنوهی";
for (int i = 0; i < st.Length; i++)
{
for (int j = i + 1; i < st.Length; j++)
{
for (int z = j + 1; z < st.Length; z++)
{
if (z > st.Length) continue;
yield return new WaitForSeconds(0.1f);
Debug.Log("I = " + i + " J = " + j + " Z= " + z);
}
}
}
}
突然,循环程序内部冻结了几秒钟,“j”计数器发生变化,所有东西都爆炸了!
这是我的日志:
我不明白怎么了 在第二个嵌套循环中,您错误地使用i而不是j作为循环控制变量:
for (int j = i + 1; i < st.Length; j++)
应该是
for (int j = i + 1; j < st.Length; j++)
为什么这会引起问题?让我们看看输出的相关部分:
I=0 J=24 Z=25
I=0 J=24 Z=26
I=0 J=25 Z=26
I=0 J=2147483647 Z=-2147483648
I=0 J=2147483647 Z=-2147483647
I=0 J=2147483647 Z=-2147483646
当代码达到I=0、J=25和z=26时,即比st的长度小一,发生以下情况:
z增加到27
第三个循环中的测试检查z