C# 图片框始终抛出未设置为对象错误实例的对象引用
我有一个班级,里面有一个图片盒。我已经创建了类的一个对象数组,但是当我尝试创建一个新的图片框时,我得到一个错误,声明object reference没有设置为object的实例 下面是我如何创建pictureboxes的C# 图片框始终抛出未设置为对象错误实例的对象引用,c#,C#,我有一个班级,里面有一个图片盒。我已经创建了类的一个对象数组,但是当我尝试创建一个新的图片框时,我得到一个错误,声明object reference没有设置为object的实例 下面是我如何创建pictureboxes的 GreyHound[] dog; public Form1() { InitializeComponent(); dog[1].MyPictureBox = new PictureBox(); dog[1].MyPi
GreyHound[] dog;
public Form1()
{
InitializeComponent();
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox1;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox2;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox3;
dog[4].MyPictureBox = new PictureBox();
dog[4].MyPictureBox = pictureBox4;
编辑代码:
灰狗
public Form1()
{
InitializeComponent();
dog = new GreyHound[4];
dog[0].MyPictureBox = new PictureBox();
dog[0].MyPictureBox = pictureBox1;
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox2;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox3;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox4;
}
您不会在以下任何位置初始化阵列:
dog = new GreyHound[4];
数组索引也从0开始,因此:
dog[0].MyPictureBox = new PictureBox();
dog[0].MyPictureBox = pictureBox1;
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox2;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox3;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox4;
您不会在以下任何位置初始化阵列:
dog = new GreyHound[4];
数组索引也从0开始,因此:
dog[0].MyPictureBox = new PictureBox();
dog[0].MyPictureBox = pictureBox1;
dog[1].MyPictureBox = new PictureBox();
dog[1].MyPictureBox = pictureBox2;
dog[2].MyPictureBox = new PictureBox();
dog[2].MyPictureBox = pictureBox3;
dog[3].MyPictureBox = new PictureBox();
dog[3].MyPictureBox = pictureBox4;
您的代码有几个严重问题:
NullReferenceException
的原因有两个:
灰狗
数组,但从未初始化它。这意味着,dog
为null
,尝试访问dog[1]
会导致null引用异常假设
GreyHound
是引用类型,这意味着您必须为数组中的每个项目创建一个实例。使用当前代码,数组中的所有项都是null
,这导致在尝试访问数组中任何项的属性MyPictureBox
时出现null引用异常,因为dog[1]
将是null
PictureBox
的新实例指定给属性MyPictureBox
,但在下一行用PictureBox
覆盖该值GreyHound[] dog = new GreyHound[4]; // solves problem 1.1
dog[0] = new GreyHound(); // solves problem 1.2
dog[0].MyPictureBox = pictureBox1;
dog[1] = new GreyHound(); // solves problem 1.2
dog[1].MyPictureBox = pictureBox2;
dog[2] = new GreyHound(); // solves problem 1.2
dog[2].MyPictureBox = pictureBox3;
dog[3] = new GreyHound(); // solves problem 1.2
dog[3].MyPictureBox = pictureBox4;
您的代码有几个严重问题:
NullReferenceException
的原因有两个:
灰狗
数组,但从未初始化它。这意味着,dog
为null
,尝试访问dog[1]
会导致null引用异常假设
GreyHound
是引用类型,这意味着您必须为数组中的每个项目创建一个实例。使用当前代码,数组中的所有项都是null
,这导致在尝试访问数组中任何项的属性MyPictureBox
时出现null引用异常,因为dog[1]
将是null
PictureBox
的新实例指定给属性MyPictureBox
,但在下一行用PictureBox
覆盖该值GreyHound[] dog = new GreyHound[4]; // solves problem 1.1
dog[0] = new GreyHound(); // solves problem 1.2
dog[0].MyPictureBox = pictureBox1;
dog[1] = new GreyHound(); // solves problem 1.2
dog[1].MyPictureBox = pictureBox2;
dog[2] = new GreyHound(); // solves problem 1.2
dog[2].MyPictureBox = pictureBox3;
dog[3] = new GreyHound(); // solves problem 1.2
dog[3].MyPictureBox = pictureBox4;
这只是一个摘录,如果没有任何意义,那么我希望你们能把我放在正确的轨道上,而不是负面评价这个问题。我已经删除了那个评论,并提供了一个答案:谢谢。我已经初始化了数组,但它仍然不工作。请阅读我的整个答案并执行所有步骤。自从我发表评论后,我已经更新了它。如果这没有帮助,请发布准确的错误。这只是一个摘录,如果没有任何意义,那么我希望你们能让我走上正确的轨道,我没有负面评价这个问题。我已经删除了那个评论,并提供了一个答案:谢谢。我已经初始化了数组,但它仍然不工作。请阅读我的全部答案并执行所有步骤。自从我发表评论后,我已经更新了它。如果这没有帮助,请发布准确的错误。非常感谢,问题已经解决了,现在我也明白了我没有错的地方。再次感谢你完美的解释:)非常感谢,问题已经解决了,现在我也明白我错在哪里了。再次感谢您的完美解释:)