繁体   English   中英

C#运行时错误:索引超出范围

[英]C# runtime error: index out of range

我必须创建一个简单的Windows窗体应用程序,其中播放器与计算机轮流抓取棍子(我用不可见的标签制成),但是我的PC代码有问题,因为它会导致运行时错误“索引超出范围”,我无法弄清楚。

    private void pcTake(int x)
    {
        textBox1.Text = "I take " + x;
        for (int i = 0; i < labels.Count; i++)
        {
            if (labels[i].Visible == false && labels[i + 1].Visible == true)
            {
                while (x > 0)
                {
                    if (x + i > labels.Count)
                        break;
                    labels[i + x].Visible = false;
                    x--;
                }
                break;
            }
        }

    }

x是随机数, labels是包含标签的列表

foreach (Control c in this.Controls)
        {
            if (c is Label)
            {
                labels.Add(c);
                c.Enabled = true;
            }
        }

提前致谢

您由于比较而获得例外

labels[i + 1].Visible == true

由于您的循环基于< labels.Count ,这意味着当循环索引达到count - 1 ,您的条件是要检查count上的数组索引(由于i + 1 ),因为数组的索引基于0,所以您是得到例外。

如果要检查当前索引和以后的索引,则循环条件应为i < labels.Count - 1如:

for (int i = 0; i < labels.Count - 1; i++)

在C#中,数组的索引为0,因此最后一项是labels [labels.Count-1];。 你应该改变这个

if (x + i > labels.Count)
    break;

进入这个

if (x + i > labels.Count -1)
    break;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM