C#静态变量-范围和持久性
我只是做了一个小实验:
public abstract class MyClass{
private static int myInt = 0;
public static int Foo()
{
return myInt;
}
public static int Foo(int n)
{
myInt = n;
return bar();
}
private static int bar()
{
return myInt;
}
}
然后我跑了:
MessageBox.Show(MyClass.Foo().ToString());MessageBox.Show(MyClass.Foo(3).ToString());
MessageBox.Show(MyClass.Foo().ToString());
MessageBox.Show(MyClass.Foo(10).ToString());
MessageBox.Show(MyClass.Foo().ToString());
我期望的结果是0、3、0、10、0。
令我惊讶的是,我得到了0、3、3、10、10。
这些更改将持续多长时间?程序执行的持续时间?函数调用静态方法的持续时间?
回答:
它们将在AppDomain期间持续存在。对静态变量所做的更改在所有方法中均可见。
MSDN:
如果使用Static关键字声明了局部变量,则其生存期比声明该过程的执行时间更长。如果该过程在模块内部,则只要您的应用程序继续运行,静态变量就会保留下来。
请参阅以下详细信息:
- C#6语言规范-静态变量
- C#6语言规范-应用程序启动
- MSDN:静态变量
- MSDN:可变生命周期
以上是 C#静态变量-范围和持久性 的全部内容, 来源链接: utcz.com/qa/425665.html