实例方法能访问静态变量?

时间:2021-06-06 04:58:33

using System;
class App
{
    static int i;
    private static void Main()
    {
        App t = new App();
        t.test();
        Console.ReadKey();
    }

    private void test()
    {
        i = 10;
        Console.WriteLine(i);
    }
}


在上面的代码变量i是静态变量。test是实例方法。在这个实例方法里面为什么能访问静态变量?

17 个解决方案

#1


为什么不呢?

#2


如果是public的静态成员,任何程序都能调用
本类的实例可以调用任何本类的静态成员,无论是public、protected、internal和private的。 
静态成员在整个程序进程中只保留一份,其生存期是全局的。

#3


因为是在本类吧
你试试在别的类实例化它,看看能不能调用!

#4


因为都在一个类里面
你把static去掉后,一样可以调用

#5


为什么不呢 
基础问题
如果是public的静态成员,任何程序都能调用
本类的实例可以调用任何本类的静态成员,无论是public、protected、internal和private的。  
静态成员在整个程序进程中只保留一份,其生存期是全局的。

#6


必须能,不能就扯了

#7


实例方法访问静态变量那是自然的,但是静态方法就不能访问实例变量,你的Main方法中之所以可以访问到test方法是因为你的 App t = new App();这句话已经实例化了以个对象,及你的实例成员变量已经在内存中存在了,这时静态方法当然也就能够访问了!

#8


你记错了吧,是静态方法不能访问实例字段。
静态字段是大家都可以访问的

#9


可以的

#10


public static 声明的方法或者变量 是类级的,只要一个类的实例没有被释放,那么任何其他类都可以通过
类.方法名(或变量名)直接引用

#11


反过来不能

#12


为什么不能访问啊楼主?
你都是在同一个类里面 你这个实例变量的修饰方式在怎么样都能访问。 建议楼主看下类的成员变量。
基础知识啊 实例方法能访问静态变量?

#13


你的i是公共的静态变量,本类的方法当然可以调用

#14


可以的

#15


在同一个类里可以啊

#16


恩。明白了。谢谢大家。我知道是基础问题。只是我的书上面说的。静态变量只能被类访问不能被实例方法访问。。   

#17


不会吧,静态变量和对象就是让其他访问的啊,不然设为私有成员就好

#1


为什么不呢?

#2


如果是public的静态成员,任何程序都能调用
本类的实例可以调用任何本类的静态成员,无论是public、protected、internal和private的。 
静态成员在整个程序进程中只保留一份,其生存期是全局的。

#3


因为是在本类吧
你试试在别的类实例化它,看看能不能调用!

#4


因为都在一个类里面
你把static去掉后,一样可以调用

#5


为什么不呢 
基础问题
如果是public的静态成员,任何程序都能调用
本类的实例可以调用任何本类的静态成员,无论是public、protected、internal和private的。  
静态成员在整个程序进程中只保留一份,其生存期是全局的。

#6


必须能,不能就扯了

#7


实例方法访问静态变量那是自然的,但是静态方法就不能访问实例变量,你的Main方法中之所以可以访问到test方法是因为你的 App t = new App();这句话已经实例化了以个对象,及你的实例成员变量已经在内存中存在了,这时静态方法当然也就能够访问了!

#8


你记错了吧,是静态方法不能访问实例字段。
静态字段是大家都可以访问的

#9


可以的

#10


public static 声明的方法或者变量 是类级的,只要一个类的实例没有被释放,那么任何其他类都可以通过
类.方法名(或变量名)直接引用

#11


反过来不能

#12


为什么不能访问啊楼主?
你都是在同一个类里面 你这个实例变量的修饰方式在怎么样都能访问。 建议楼主看下类的成员变量。
基础知识啊 实例方法能访问静态变量?

#13


你的i是公共的静态变量,本类的方法当然可以调用

#14


可以的

#15


在同一个类里可以啊

#16


恩。明白了。谢谢大家。我知道是基础问题。只是我的书上面说的。静态变量只能被类访问不能被实例方法访问。。   

#17


不会吧,静态变量和对象就是让其他访问的啊,不然设为私有成员就好