在控制台应用程序中我在main函数外声明了一个对象,在类中为什么不能取到?

class Program
 {
   Data1[] a;
  public void getdata()
  {
   a = new Data1[3];
   for (int i = 0; i < 3; i++)
   {
    a[i] = new Data1();
    a[i].aa = i;
   }
   
  }
  public void outdata()
  {
   Program x = new Program();
   x.getdata();
   
   Console.WriteLine(a.Length.ToString());
  }
  static void Main(string[] args)
  {

   Program x = new Program();
   x.outdata();
   Console.Read();
  }
 }
 public class Data1
 {
  public int aa;
 }

这个程序出错,说是未将对象a引用到实例,为什么我取不到a呢?明明我在main之外声明的对象a

这能说明什么机制啊?谁能帮帮我,我搞不明白!


狐的传说
浏览 360回答 2
2回答

慕田峪7331174

&nbsp; public void outdata()&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;Program x = new Program();&nbsp;&nbsp;&nbsp;x.getdata();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(a.Length.ToString());&nbsp;&nbsp;}这里你只是给 x实例里的a赋值,并没有给当前对象里的a赋值。&nbsp; public void outdata()&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;Program x = new Program();&nbsp;&nbsp;&nbsp;x.getdata();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.getdata();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(a.Length.ToString());&nbsp;&nbsp;}改成这样就好了。

不负相思意

变量生命周期问题;不同对象;楼上的可以解决问题。
打开App,查看更多内容
随时随地看视频慕课网APP