Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类而不是实例中初始化单例?_C#_Design Patterns_Singleton - Fatal编程技术网

C# 在类而不是实例中初始化单例?

C# 在类而不是实例中初始化单例?,c#,design-patterns,singleton,C#,Design Patterns,Singleton,为什么你不能做到以下几点 class foo { private static foo instance = new foo(); List <string> messages = new List<string>(); private foo(){} public static void doSomething(){..} } class-foo{ 私有静态foo实例=new foo(); 列表消息=新列表(); 私有foo(){} 公共静态v

为什么你不能做到以下几点

class foo {
  private static foo instance  = new foo();
  List <string> messages = new List<string>();


  private foo(){}
  public static void doSomething(){..}

}
class-foo{
私有静态foo实例=new foo();
列表消息=新列表();
私有foo(){}
公共静态void doSomething(){..}
}
编辑:

我的意思是这样做有区别吗:

class foo {
  private static foo instance  = new foo();
  List <string> messages = new List<string>();


  private foo(){}
  public static void doSomething(){..}

}
class-foo{
私有静态foo实例=new foo();
列表消息=新列表();
私有foo(){}
公共静态void doSomething(){..}
}

class-foo{
私有静态foo实例;
列表消息=新列表();
私有foo(){}
公共静态void doSomething(){..}
public foo getInstance(){
if(实例!=null){
返回实例;
}
}
}

您的方法
doSomething()
缺少返回类型。尝试:

class Foo {
    private static Foo instance = new Foo();
    List<string> messages = new List<string>();

    private Foo() { }

    public static void doSomething() {
        // Make any necessary accesses to "instance" here.
    }
}
class-Foo{
私有静态Foo实例=new Foo();
列表消息=新列表();
私有Foo(){}
公共静态无效剂量测定法(){
//在此处对“实例”进行任何必要的访问。
}
}

可以,只是没有给
doSomething()
提供返回类型这是为支持它的语言实现单例模式的非惰性方法。这样做是完全可以接受的,特别是因为这是实现线程安全单例的方法之一。但是,如果单例对象的创建成本很高(请参见),那么以这种方式创建它可能并不合适


如前所述,如果您的代码没有编译,那么
doSomething
方法的语法就不正确。

您不能做什么?除了
doSomething
中缺少一个返回类型之外,这里一切正常。
class Foo {
    private static Foo instance = new Foo();
    List<string> messages = new List<string>();

    private Foo() { }

    public static void doSomething() {
        // Make any necessary accesses to "instance" here.
    }
}