请大家帮忙看看下面的一小段关于对象数组的程序
我在写个程序时,遇到这样的问题,现把它简化出来..代码如下:
private class B //如果是 private struct B 就可以...为什么????
{
private int a;
public int A
{
get
{
return a;
}
set
{
a = value;
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
B[,] b = new B[4, 4];
b[0, 0].A = 2;
}
运行时,提示错误为: "
未将对象引用设置到对象的实例.",如果改为 private struct B 就没有问题,为什么会出现这样的错误啊..谢谢!!~~~
------解决方案--------------------你只new了数组,而没有new类的实例
B[,] b = new B[4, 4];
这里你new了数组
但是数组的元素 b[0, 0]只是B对象的实例的引用,它并没有被实例化
b[0, 0]=new B();应该就可以了
------解决方案--------------------对象数组当然是对象的
下面代码参考一下:
public class MyClass
{
private class B
{
private int a;
public int A
{
get {return a; }
set {a = value; }
}
}
public static void Main()
{
B[,] b =new B[4, 4];
b[0,0] =new B();
b[0,0].A=1;
Console.WriteLine(""+b[0,0].A);
Console.Read();
}
}
------解决方案--------------------只能是实数型的才可以B[,];Class is not a Value Type.
------解决方案--------------------对像实例化一样就可以的