我也熟悉Windows Phone和C#。我发现有一个 我的Coloring()函数中的IndexOutOfRangeException:
public void Coloring()
{
szinek_base.Add(Color.FromArgb(255, 0, 171, 169));
szinek_base.Add(Color.FromArgb(255, 140, 191, 38));
szinek_base.Add(Color.FromArgb(255, 160, 80, 0));
szinek_base.Add(Color.FromArgb(255, 230, 113, 184));
szinek_base.Add(Color.FromArgb(255, 240, 150, 9));
szinek_base.Add(Color.FromArgb(255, 27, 161, 226));
szinek_base.Add(Color.FromArgb(255, 229, 20, 0));
szinek_base.Add(Color.FromArgb(255, 51, 153, 51));
int remove;
Color szin = new Color();
Random generator = new Random();
List<int> lapok = new List<int>();
for (int l = 0; l < 16; l++)
{
lapok.Add(l);
}
for (int i = 0; i < 8; i++)
{
szin = szinek_base[generator.Next(0, szinek_base.Count)];
remove = lapok[generator.Next(0, lapok.Count)];
szinek[remove] = szin;
lapok.Remove(remove);
szinek_base.Remove(szin);
remove = lapok[generator.Next(0, lapok.Count)];
szinek[remove] = szin;
lapok.Remove(remove);
szinek_base.Remove(szin);
}
}
使用try-catch我还发现第二个for()循环包含bug。 但是,如果我分成一半块并使用try-catch,它不会发现错误,也不会在第一部分 第二个。这个代码在Windows 7下工作正常,作为记忆游戏的一部分顺便说一句,我的想法。 感谢您的帮助,对不起语法错误和其他错误,我还不知道StackOverflow协议。
编辑:忘记提及,主命名空间包含它们:
public List<Color> szinek_base = new List<Color>();
Color[] szinek = new Color[8];
答案 0 :(得分:4)
从评论中稍后修改:
szinek 它似乎是一个包含8个元素的数组,但 lapok 是16个元素的列表。
当 lapok.Count 传递给Random构造函数的第二个参数时,这意味着它可能会生成大于8的东西并且会引发 IndexOutOfRangeException
答案 1 :(得分:3)
修改强>
道歉,最初的答案是错误的。正如Adrian所强调的那样,抛出了异常,因为正在使用不正确的列表计数属性来突出显示可移除项目。
答案 2 :(得分:1)
请忽略我之前的回答。我找到了实际问题......
您可以根据随机变量设置删除,该随机变量可以介于0到16之间。
然后尝试从szinek中删除元素“remove”,这可能只有8号。