class A { int x; static int y; static int F() { x = 1; //错误 不允许访问 y = 2 //正确 允许访问 } } 作为非静态成员,在类的每个实例中都占有一个存储,或者说具有一个副本,而静态方法是类所共享的,它无法判断出当前的x属于哪个类的实例,所以不知道应该到内存的哪个地址去读取当前x的值;而y是静态成员所有类的实例都公用一个副本,静态方法F使用它就不存在什么问题。 是不是静态方法就无法识别类的实例了呢?不是,在C#中,我们可以灵活地采用传递参数的办法以一个类的实例做参数。 |
|