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

回到顶部