2009-09-05 87 views
1

从MSDN文档我了解(我不知道,我完全理解):C# - 静态成员只能对静态数据进行操作吗?

静态成员只能对静态数据进行操作,并调用

定义类的静态方法。


我计算出以下代码:

class Test 
{ 
static int i; 

public static void StaticDemo() 
{ 
    int v; 
    i=10; 
    v=10*i; 

    Console.WriteLine("The value of i={0}",v); 

} 
} 

在上述例子中的声明INT v 方法StaticDemo()不是静态的字段内。那么我的工作是如何运作的?

回答

10

MSDN文档是指如果您未传入实例,则您在无法访问静态方法中的实例成员这一事实。当然,每个方法都可以声明局部变量并使用它们。

5

int v是函数的局部,因此不是类成员。 (即不需要该类的实例)

1

它的工作原理是v对静态函数本身是本地的。如果v在Test类的主体中定义,它不会。

-1

因为它没有超出静态方法的范围。换句话说,有被保持的方法没有状态

+2

这不是私人的。它是本地的。 – recursive 2009-09-05 16:45:31

2

由于v不属于定义类但对方法并且因此可以通过该方法被操作。

3

函数总是可以对局部变量进行操作,而不管它们是否是静态的。由于v是在你的StaticDemo函数中声明的,所以它是一个局部变量(即只能在函数中访问)。

文档所指的是您无法访问静态方法中的实例变量。所以如果不是将我声明为'static int i'你已经宣布它为'int i';' StaticDemo方法将无法访问它,因为它将是一个实例变量(即不是静态的)。

1

由于中定义的变量方法不是静态的或实例...它们在本地的范围为方法本身

它们存储在方法的堆栈帧中,与实例或类没有任何关系。