黑马程序员技术交流社区

标题: static修饰的方法为什么不能调用方法外非STATIC修饰的变量 [打印本页]

作者: 郑玉赛    时间: 2012-5-15 17:56
标题: static修饰的方法为什么不能调用方法外非STATIC修饰的变量
本帖最后由 郑玉赛 于 2012-5-17 19:27 编辑

{:soso_e136:}昨天看到别人问的这个问题,后来到处看了下资料,还是没弄明白,为什么在同一个类中吗,非STATIC修饰的变量不能被static修饰的方法访问。
作者: 王超洋    时间: 2012-5-16 11:22
根据我看的视频老师讲的,只要是没有加static的方法或属性,都必须先实例化,再通过实例名.方法名或实例名.属性名来访问,加static的方法或属性,可以直接通过 类名.方法名或类名.属性名来访问。
    class Program
    {
        int age;

        static void Main(string[] args)
        {
            Program a = new Program();   //实例化
            a.age = 18;
        }
    }
作者: 王友伟    时间: 2012-5-16 12:29
没有static的方法或属性,都要对类进行实例化通过实例化类名才能访问,而static方法或属性则可以直接通过类名访问,在本类之中的可以直接访问
namespace static静态方法
{
    class B
    {
        public int b1;
        public static int b2;               
    }
    class A
    {
        int a1;
        static int a2;

        static void Main(string[] args)
        {
            A a = new A();
       a.a1 = 20;
            a2 = 20;
            Console.WriteLine(a.a1);
            Console.WriteLine(a2);

            B b = new B();
            b.b1 = 21;
            B.b2 = 21;
            Console.WriteLine(b.b1);
            Console.WriteLine(B.b2);
            Console.ReadKey();
        }
    }
}
作者: 朱亮辉    时间: 2012-5-16 17:36
静态类与非静态类的访问方式,静态类可以通过类访问类中的静态方法、静态变量等等,而非静态类只能通过实例化对象访问,如果静态类中有非静态成员,当然是不可以访问的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2