我将单例类实现为包含在页面中的私有类。在单例中,我将一些数据存储在volatile变量中。问题是成员变量在页面执行之间保留其值。我的假设是在每次执行页面时首次使用该类会重新初始化。
为什么它会以这种方式运作,应该采取什么措施呢?
答案 0 :(得分:3)
如果单例实例定义为static,则它将作为应用程序变量确定范围。静态范围就像全局变量。
答案 1 :(得分:1)
你的课很可能被标记为'静态',所以你所看到的是这种副作用。来自Static Classes and Static Class Members:
静态构造函数只被调用一次,静态类在程序所在的应用程序域的生命周期内保留在内存中。
所以你所看到的是预期的行为。您的单身人士的私人成员保持其先前状态,因为该类仍保留在应用程序的内存中。如果你想保持你的单例模式,但在调用其中一个方法时想要一个“新鲜”状态,你可以重置方法访问的任何私有成员变量的值。
以下是关于何时使用您可能感兴趣的静态类的很好的讨论: