ASP.Net-页面类中的singleton类

本文关键字:singleton Net- ASP | 更新日期: 2023-09-27 17:58:16

我实现了一个singleton类作为包含在页面中的私有类。在singleton中,我将一些数据存储在一个volatile变量中。问题是成员变量在页面执行之间保留其值。我的假设是,在每次执行页面时,类在第一次使用时会被重新初始化。

为什么它会这样做,该怎么办?

ASP.Net-页面类中的singleton类

如果将singleton实例定义为静态实例,则其作用域将作为应用程序变量。静态作用域类似于全局变量。

您的类很可能被标记为"static",所以您看到的是这种情况的副作用。从静态类和静态类成员:

静态构造函数只被调用一次,静态类在程序所在的应用程序域的整个生命周期内都保留在内存中。

所以你看到的是有意的行为。您的singleton的私有成员仍处于以前的状态,因为类仍保留在应用程序的内存中。如果您想保留您的singleton模式,但在调用它的某个方法时想要一个"新鲜"状态,则可以重置该方法访问的任何私有成员变量的值。

以下是关于何时使用您可能感兴趣的静态类的一个很好的讨论:

何时在C#中使用静态类