在哪里创建单例实例,如果我不需要这个实例在我的程序

本文关键字:实例 不需要 我的 程序 创建 单例 如果 在哪里 | 更新日期: 2023-09-27 18:16:29

假设我有一些只需要实例化的单例。在构造函数中,它启动定时器,并每秒更新一些模型数据。

执行单例构造函数,我只需要引用它。我不需要结果实例,因为我不需要对单例做任何事情,它应该在整个应用程序执行期间存在。

但是c#不允许这样的结构:WcfLoader.Instance;

所以我必须使用这个WcfLoader loader = WcfLoader.Instance;但是我从不使用loader实例。

它看起来很奇怪,是不是意味着我做错了什么?

在哪里创建单例实例,如果我不需要这个实例在我的程序

在你的类中添加一个静态Init方法,然后调用WcfLoader。Init而不是获取实例。这样看起来一点也不奇怪。

不要让这成为获得Instance属性的副作用。获取属性不应该有副作用。

在单例上添加一个InitTimer()或类似的方法

还可以使用实例构造函数:

public class WcfLoader {
   static WcfLoader _instance;
   public WcfLoader() {
      if ( _instance == null ) {
         // do the initialization
         _instance = this; 
      }
   } 
}

那么初始化包括调用构造函数,甚至不将引用存储在任何地方。

// just create a new object which causes the initialization code to execute
new WcfLoader();

当然,显式初始化方法(正如其他人提到的)是最好的选择。