A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 郑玉赛 于 2012-5-17 19:27 编辑

{:soso_e136:}昨天看到别人问的这个问题,后来到处看了下资料,还是没弄明白,为什么在同一个类中吗,非STATIC修饰的变量不能被static修饰的方法访问。

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

3 个回复

正序浏览
静态类与非静态类的访问方式,静态类可以通过类访问类中的静态方法、静态变量等等,而非静态类只能通过实例化对象访问,如果静态类中有非静态成员,当然是不可以访问的。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
没有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();
        }
    }
}

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
根据我看的视频老师讲的,只要是没有加static的方法或属性,都必须先实例化,再通过实例名.方法名或实例名.属性名来访问,加static的方法或属性,可以直接通过 类名.方法名或类名.属性名来访问。
    class Program
    {
        int age;

        static void Main(string[] args)
        {
            Program a = new Program();   //实例化
            a.age = 18;
        }
    }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马