public class WebForm3 : System.Web.UI.Page
{
   static WebForm3 x=new WebForm3();
            public int a=1;
   public int b=x.a;
            ......
            ......
         }
编译的时候能通过,但是运行的时候在b=x.a那里提示System.NullReferenceException: 未将对象引用设置到对象的实例。什么原因?会这样????
但是如果换成:
         {
   public int a=1;
   public int b=a;
            ......
            ......
         }
连编译都通不过,因为我们知道在未生成这个类的实例,a是还没有初始化的,所以不能被引用。

解决方案 »

  1.   

    public class WebForm3 : System.Web.UI.Page
    {
    static WebForm3 x = new WebForm3();
             public static int a = 1;
    public int b=x.a;
             ......
             ......
    }
      

  2.   

    to public int b=a;这个相当于
    public int b = this.a;
    这是不能被编译的,因为是用对象成员去初始化成员。你要干什么,你如下定义就没什么问题
    public static int a=1;
    public int b = a;
      

  3.   

    定义a的时候加上static,定义成静态变量
    static WebForm3 x=new WebForm3();
    x 是静态的对象,只能访问静态对象的静态变量
      

  4.   

    是这样的
    static WebForm3 x=new WebForm3();
    public int a=1;
    public int b=x.a;//这样写是不行的
    //在声明的时候 可以构造与常量赋值 象头两句
    //变量赋值 必须写到构造或方法中
    //public int b;
    //在构造中写 b=x.a;//这样就OK了
      

  5.   

    to:Knight94(愚翁)
      public static int a=1;
      public int b = a;
    这样当然可以,静态变量加载类时就初始化了,后面就可以引用了
    但是用:
             static WebForm3 x = new WebForm3();
             public int a = 1;
    public int b=x.a;
    x也已经初始花了,也应当包括这个类里的属性分配空间。但会报错???
    TO:zhjg136(天星)
    x是个静态对象,但是属于类的对象,怎么能去调用类里的静态变量???
      

  6.   

    是不是在申明:static WebForm3 x = new WebForm3();
    x没有被分配空间??