c# 的循环迭代的数目不正确

标签: C#
发布时间: 2013/12/8 7:44:11
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我正在写一个函数,遍历字符串 [] 数组,并将一些对象添加到列表中。它是加载保存的游戏系统的一部分。然而,它有很多 buggs 因为我写的代码,很多之前可以测试任何它。但在此阶段中调试,我发现一些奇怪的 bug,我不能解释或修复。
我不能访问的一些数据。如果我有原代码,for 循环将循环 1 少然后需要时间。如果将 + 1 添加到迭代器的限制,它通常的行为。最后,我可以循环-1 或 + 1 倍,但不是多,我需要。
这是原代码,循环一次低于预期:

string str = " start at " + Convert.ToInt32(s[k]) + " " + k;
        for (int i = 0; i < Convert.ToInt32(s[k]); i++)
        {
            k++;
            landOwned.Add(setle.civil.land[Convert.ToInt32(s[k]), Convert.ToInt32(s[k+1])]);
            k++;
            str += "  iteration "+i + " finish " + k;
        }
        throw new ArgumentException(str);

这是文字文件中的行:

f 4894 0 250 -523058 0 0 0 0 0 0 0 0 0 0 0 0 0 35 35 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 4 2 4 3 3 4 4 1 0 1 0 1 0 1 2

这里有赶上的屏幕截图所产生的异常:

enter image description here

解决方法 1:

问题是在循环结束测试 (k) 中使用的变量在循环中递增。

如下所示更改循环必须解决的问题:

    var endIndex = Convert.ToInt32(s[k]);
    for (int i = 0; i < endIndex; i++)
官方微信
官方QQ群
31647020