如何访问Singleton类的静态方法?

Vij*_*dra 2 c# asp.net oop

我对单身课有些困惑,下面是我的一些观点:

  1. 单例类可以有静态方法吗?如果是,那么我们如何调用这些方法?
  2. Static class和Singleton Class之间的主要区别是什么?

我创建了我的单例类,如下所示:

 public class Singleton
    {
        private static  Singleton _instance = null;
        private static object chekLock = new object();
        private Singleton()
        {}

        public static Singleton Instance
        {
            get
            {
                lock (chekLock)
                {
                    if (_instance == null)
                        _instance = new Singleton();
                    return _instance;
                }
            }
        }

        public static void StaticAddMethod()
        {
            Console.WriteLine("Add Method");
        }

        public void AddMethod()
        {
            Console.WriteLine("Add Method");
        }
    }
Run Code Online (Sandbox Code Playgroud)

在上面的类结构中,我创建了两个方法,一个是静态,第二个是非静态的,当我尝试访问静态方法时,它给出了编译时错误.

我怎样才能使用单例类的静态方法?

Mar*_*ell 7

你是怎么试图访问它的?要访问静态方法,请使用类型名称:

Singleton.StaticAddMethod();
Run Code Online (Sandbox Code Playgroud)

VS

Singleton.Instance.AddMethod();
Run Code Online (Sandbox Code Playgroud)

还要注意,有更简单的实现单例的方法,可以在锁定较少的情况下实现相同的效果.

重新判断单身和静止之间的区别; 单例可以实现一个接口,允许您将其传递给现有代码.您也可以(正如您所做的那样)推迟构造单例(但仍然允许访问不涉及单例实例的静态方法).但是是的:静态和单身之间存在很多交叉.