按钮数组的NullReferenceException
本文关键字:NullReferenceException 数组 按钮 | 更新日期: 2023-09-27 18:12:13
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;
这一行导致NullReferenceException
。任何建议都很感激!!
两个问题:
-
form1.button1
(等)可能为空。你应该在构造函数中验证这一点。 - 如果调用无参数构造函数而不是
Puzzle(Form1)
构造函数,buttons
仍将为空。我建议你去掉无参数构造函数。
I'd 还建议对所有循环使用大括号,即
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
buttons[i, j].BackColor = Color.Lime;
}
}
是的,它占用更多的空间,但在我的经验中,它更清晰,更不容易出错。
您确定正在调用默认构造函数吗?看起来您的类需要Form1
实例才能运行,因此请尝试删除默认构造函数。如果构建失败,你就得到了答案!