C#运行时错误:索引超出范围
我必须制作一个简单的windows窗体应用程序,在该应用程序中,玩家轮流使用电脑取走棍子(我用看不见的标签制作的),但我对电脑的代码有一个问题,因为它会导致运行时错误“索引超出范围”,我无法理解C#运行时错误:索引超出范围,c#,runtime-error,C#,Runtime Error,我必须制作一个简单的windows窗体应用程序,在该应用程序中,玩家轮流使用电脑取走棍子(我用看不见的标签制作的),但我对电脑的代码有一个问题,因为它会导致运行时错误“索引超出范围”,我无法理解 private void pcTake(int x) { textBox1.Text = "I take " + x; for (int i = 0; i < labels.Count; i++) { if (
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;
}
}
}
提前感谢由于你的比较,你得到了一个例外
labels[i + 1].Visible == true
由于循环是基于
,这意味着当循环索引达到Count-1
时,假设您的条件是检查Count
上的数组索引(因为i+1
),因为数组的索引是基于0的,所以您将得到异常
如果要检查当前索引和以后的索引,则循环条件应为i
如:
for (int i = 0; i < labels.Count - 1; i++)
for(int i=0;i
由于你的比较,你得到了一个例外
labels[i + 1].Visible == true
由于循环是基于
,这意味着当循环索引达到Count-1
时,假设您的条件是检查Count
上的数组索引(因为i+1
),因为数组的索引是基于0的,所以您将得到异常
如果要检查当前索引和以后的索引,则循环条件应为i
如:
for (int i = 0; i < labels.Count - 1; i++)
for(int i=0;i
在C#中,数组是0索引的,因此最后一项是labels[labels.Count-1];你应该改变这个
if (x + i > labels.Count)
break;
进入这个
if (x + i > labels.Count -1)
break;
在C#中,数组是0索引的,因此最后一项是labels[labels.Count-1];你应该改变这个
if (x + i > labels.Count)
break;
进入这个
if (x + i > labels.Count -1)
break;
您是否设置了断点,跟踪了i和x的值,并找出了哪行代码出错了?排除此错误的第一步是了解正在访问的数组索引以及数组的长度。有关断点的信息,请参阅是否设置了断点,跟踪i和x的值,并找出哪行代码出错?排除此错误的第一步是了解正在访问的数组索引以及数组的长度。有关断点的信息,请参阅…我真的很愚蠢,没有看到这一点,谢谢;现在又出现了另一个问题,本应消失的标签不会消失。。有什么想法吗?…我真的很愚蠢,没有看到,谢谢;现在又出现了另一个问题,本应消失的标签不会消失。。有什么想法吗?