静态方法中是否有静态变量?是否会在对方法的所有调用中保留此变量的值?
例如。
public static void MyMethod()
{
static int x = 0;
x++;
}
答案 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。因为函数仍然可以是独立的,所以函数中仍然有静态变量。