class Puzzle
{
private int PUZZLESIZE = 3;
private int col, row;
private Button[,] buttons;
public Puzzle()
{
}
public Puzzle(Form1 form1)
{
buttons = new Button[3, 3]
{ { form1.button1, form1.button2, form1.button3 },
{ form1.button4, form1.button5, form1.button6 },
{ form1.button7, form1.button8, form1.button9 } };
}
public void reset()
{
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
buttons[i, j].BackColor = Color.Lime;
}
}
buttons[i, j].BackColor = Color.Lime;
当我在 Form1.cs 中调用重置方法时,此行会导致 NullReferenceException
。任何建议表示赞赏!!!
最佳答案
两个问题:
form1.button1
(等)可能为空。您应该在构造函数中验证这一点。- 如果您调用无参数构造函数而不是
Puzzle(Form1)
构造函数,buttons
仍将为 null。我建议您摆脱无参数构造函数。
我还建议您对所有循环使用大括号,即
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
buttons[i, j].BackColor = Color.Lime;
}
}
是的,它需要更多空间 - 但根据我的经验,它更清晰且不易出错。
关于c# - 按钮数组的 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7886814/