我真的很纠结于如何表达这一点,但我正在用C#创建一个程序,它基本上是随机输出它,但为了避免重复,我从ArrayList中删除了它。
现在它可以工作了,但有时它会覆盖一个已经说过的当前数字,并留下一个空按钮。
我将展示我的代码如下:
Button[] buttons = new Button[3];
int questionNumber = 0;
int qNumber = 0;
int x = 1;
Random r = new Random();
List<Button> listOfButtons = new List<Button>();
listOfButtons.Add(buttons[0]);
listOfButtons.Add(buttons[1]);
listOfButtons.Add(buttons[2]);
int rIndex;
while (qNumber < 3)
{
rIndex = r.Next(0, listOfButtons.Count); //Choose a random object from list
listOfButtons[rIndex].Text = qAnswer[questionNumber, x++]; // adds text to button
listOfButtons.Remove(buttons[rIndex]); // removes button from index
qNumber++;
}
private void EasyLevel_Load(object sender, EventArgs e)
{
buttons[0] = a1; // a1 is button
buttons[1] = a2;
buttons[2] = a3;
}发布于 2015-04-21 20:04:59
我认为你遇到了问题,因为listOfButtons.Remove(buttons[rIndex])并没有像你想象的那样检查对象的相等性。
请尝试使用listOfButtons.RemoveAt(rIndex)。
https://stackoverflow.com/questions/29771200
复制相似问题