Main()不想访问类变量

use*_*808 4 c# variables methods scope class

为什么我可以从"method()"而不是从Main()方法访问X变量?

    class Program
    {
        int X;  // this is the variable I want access

        static void Main(string[] args)
        {
            int a;
            a = X; // this doesnt work, but why?
        }
        void metodo()
        {
            int b;
            b = X; //this works, but why?
        }
    }
Run Code Online (Sandbox Code Playgroud)

SWe*_*eko 13

尝试

static int X
Run Code Online (Sandbox Code Playgroud)

X是一个实例变量,这意味着您的类的每个实例都有自己的版本X.但是,Main是一个静态方法,这意味着Program该类的所有实例只有一个Main ,所以它访问没有意义X,因为可能有多个X或者根本没有,如果没有Program实例已创建.

使X本身静态,意味着所有Program实例都将共享X,因此共享方法将能够访问它.


Mik*_*keP 5

Main()是一个静态函数.无法从静态函数访问非静态变量.