你可以在静态方法中有一个静态变量吗?该变量的值是否会在对该方法的所有调用中保留?
例如。
public static void MyMethod()
{
static int x = 0;
x++;
}
你可以在静态方法中有一个静态变量吗?该变量的值是否会在对该方法的所有调用中保留?
例如。
public static void MyMethod()
{
static int x = 0;
x++;
}
不,但您可以:
private static int x = 0;
public static void MyMethod()
{
x++;
}
这是一种完成你想要做的事情的黑客方式。变成MyMethod
在Action
上创建闭包的x
。该变量x
仅对最里面的委托可见,并且表现得像一个静态变量。如果有人对改进此模式有任何建议,请告诉我。
public static readonly Action MyMethod = new Func<Action>(delegate ()
{
var x = 0;
return delegate () { x++; };
}).Invoke();
//example usage:
public void Init() {
MyMethod();
}