我刚刚做了一个小实验:
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。
这些变化会持续多久?程序执行的持续时间?函数调用静态方法的持续时间?
他们将持续一段时间应用程序域。对静态变量所做的更改在方法中可见。
MSDN:
如果使用 Static 关键字声明局部变量,则其生存期比声明它的过程的执行时间长。如果该过程位于模块内部,则只要应用程序继续运行,静态变量就会一直存在。
请参阅以下内容了解更多详细信息:
- C#6 语言规范 - 静态变量
- C#6 语言规范 - 应用程序启动
- MSDN:静态变量
- MSDN:可变生命周期
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)