c#:静态方法中的静态变量

时间:2010-12-24 10:12:51

标签: c# static

静态方法中是否有静态变量?是否会在对方法的所有调用中保留此变量的值?

例如。

public static void MyMethod()
{
    static int x = 0;
    x++;
}

3 个答案:

答案 0 :(得分:20)

没有。

您不能拥有本地静态变量。

来自MSDN

  

C#不支持静态局部变量(在方法范围内声明的变量)。

here

  

static修饰符可以与类,字段,方法,属性,运算符,事件和构造函数一起使用,但不能与索引器,析构函数或类以外的类型一起使用。

如您所见,局部变量提及。


可以,但是使用静态字段:

public class MyClass
{
    private static int MyVariable = 10;

    public static void MyMethod()
    {
        MyVariable++;
    }
}

答案 1 :(得分:5)

不,但你可以:

private static int x = 0;
public static void MyMethod()
{
     x++;
} 

答案 2 :(得分:-2)

C#是一种面向对象的编程语言,C是一种程序编程语言。

这基本上意味着在C中,在功能块中有一个静态变量是合乎逻辑的。在C#中,类是一个基本块,因此在类中只有静态成员是合乎逻辑的。

这就是(简而言之)为什么C#函数中没有静态变量。

您可以在类中使用静态成员,并在函数中使用它来获得相同的效果。

BTW,C ++处于中间位置,它将OOP引入C,但它还不是纯粹的OOP。因为函数仍然可以是独立的,所以函数中仍然有静态变量。