静态方法只能访问类的静态成员,不能访问类的非静态成员;非静态方法可以访问类的静态成员,也可以访问类的非静态成员;静态方法不能使用实例来调用,只能使用类名来调用对于上面三句话只能从表面上理解,但并不知其为什么这样,为什么静态方法不能访问问的非静态成员搞不太懂,
望高手详解下。

解决方案 »

  1.   

    首先你可以这么想,这就是.netframework的游戏规则。
    静态方法和静态属性,是在你第一次使用这个类的时候加载到内存中,并且以后都不会消失(理论上),除非程序关掉。而非静态成员必须存在于一个实例化的对象中。也就是必须new一个对象分配到堆中后它才存在。你在没有new对象之前它都不存在,你怎么去访问它?
    在静态方法里不能访问非静态成员这句话不对,你在方法体里new一个对象后不就能访问了?
      

  2.   

        静态方法只能访问类的静态成员,不能访问类的非静态成员;     非静态方法可以访问类的静态成员,也可以访问类的非静态成员;     静态方法不能使用实例来调用,只能使用类名来调用 
     楼主的问题入上面所述。
      我的解答如下:
      
      静态方法,是类的方法,也就是与类绑定的,每个类的实例都可以用这儿方法。
      非静态成员,这个成员,如果是公有的话,子类也可以引用。所以,它就不能直接被类引用了。
       
      非静态方法 可以访问静态成员,它的访问规则还是那样的class.StaticMethod().  ,非静态成员也可以了,因为他是类的。
     
      就是啊,静态方法不能用实例来调用,因为它是类的,所以直接用类名来访问。class.StaticMethod()
      
      

  3.   

    类的静态成员是属于类的而不是属于哪一个对象的,不能通过对象访问,直接用类名访问 
      
    静态成员函数由于与对象无关系,所以在其中是不能对类的普通成员进行直接操作的
       
    静态成员函数与普通成员函数的差别就在于缺少this指针,静态成员在类加载时就存在与内存中,
    与全局函数相比,这样可以减少内存开销。