我只是做了一个小实验:
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关键字声明了局部变量,则其生存期比声明该过程的执行时间更长。如果该过程在模块内部,则只要您的应用程序继续运行,静态变量就会保留下来。
请参阅以下详细信息: