C# ASP.Net-页面类中的单例类

C# ASP.Net-页面类中的单例类,c#,asp.net,singleton,C#,Asp.net,Singleton,我实现了一个单例类作为页面中包含的私有类。在单例中,我将一些数据存储在一个可变变量中。问题是成员变量在页面执行之间保留其值。我的假设是,在每个页面执行期间,第一次使用时,该类将被重新初始化 为什么它会这样,应该怎么做?如果单例实例是静态定义的,那么它的作用域将是一个应用程序变量。静态作用域类似于全局变量。如果将单例实例定义为静态,则其作用域将作为应用程序变量。静态范围类似于全局变量。您的类很可能被标记为“static”,因此您看到的是它的副作用。发件人: 静态构造函数只调用一次,并且静态类在程序

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


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

如果单例实例是静态定义的,那么它的作用域将是一个应用程序变量。静态作用域类似于全局变量。

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

您的类很可能被标记为“static”,因此您看到的是它的副作用。发件人:

静态构造函数只调用一次,并且静态类在程序所在的应用程序域的生命周期内一直保留在内存中

所以你所看到的是预期的行为。由于类仍保留在应用程序的内存中,因此您的单例私有成员仍保持其以前的状态。如果希望保持单例模式,但在调用它的一个方法时希望处于“新鲜”状态,则可以重置该方法访问的任何私有成员变量的值

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


您的类很可能被标记为“静态”,因此您看到的是它的副作用。发件人:

静态构造函数只调用一次,并且静态类在程序所在的应用程序域的生命周期内一直保留在内存中

所以你所看到的是预期的行为。由于类仍保留在应用程序的内存中,因此您的单例私有成员仍保持其以前的状态。如果希望保持单例模式,但在调用它的一个方法时希望处于“新鲜”状态,则可以重置该方法访问的任何私有成员变量的值

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


一些显示类的定义和实例化的代码会很有帮助。为什么不使用
会话
缓存
?谢谢。我已经更新了代码,将数据放入HttpContext.Current.Session。基本上,我希望整个页面的代码简洁性采用单例模式,但我希望它是每页执行的(这是一个数据集合,检索成本很高,但不应在每页之间保留)。一些显示类的定义和实例化的代码会很有帮助。为什么不使用
会话
缓存
?谢谢。我已经更新了代码,将数据放入HttpContext.Current.Session。基本上,我想要一个单例模式来简化整个页面的代码,但我希望它是每页执行的(这是一个数据集合,检索成本很高,但不应该在每页之间保存)。