日期:2014-05-18  浏览次数:20813 次

请大家帮忙看看下面的一小段关于对象数组的程序
我在写个程序时,遇到这样的问题,现把它简化出来..代码如下:

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.

------解决方案--------------------
对像实例化一样就可以的