C#:静态方法中的静态变量
静态方法中可以有静态变量吗?该变量的值会在对该方法的所有调用中保留吗?
例如。
public static void MyMethod()
{
static int x = 0;
x++;
}
Can you have a static variable in a static method? Would the value of this variable be preserved across all calls to the method?
eg.
public static void MyMethod()
{
static int x = 0;
x++;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不可以。
你不能有局部静态变量。
来自 MSDN:
此处:
正如您所看到的,局部变量没有被提及。
您可以,但是使用静态字段:
No.
You can't have local static variables.
From MSDN:
And here:
As you can see, local variables are not mentioned.
You can, however use a static field:
不,但你可以:
No, but you could have:
这是一种实现您想要做的事情的黑客方法。将
MyMethod
转换为在x
上创建闭包的Action
。变量 x 仅对最里面的委托可见,其行为类似于静态变量。如果有人对改进这种模式有任何建议,请告诉我。Here is sort of a hackish way to accomplish what you're trying to do. Turn
MyMethod
into anAction
that creates a closure onx
. The variablex
will only be visible to the innermost delegate, and behaves like a static variable. If anyone has any suggestions for improving this pattern let me know.