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