[英]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.