为什么不能这样做?
class foo {
private static foo instance = new foo();
List <string> messages = new List<string>();
private foo(){}
public static void doSomething(){..}
}
编辑:
我的意思是这样做有区别:
class foo {
private static foo instance = new foo();
List <string> messages = new List<string>();
private foo(){}
public static void doSomething(){..}
}
或
class foo {
private static foo instance;
List <string> messages = new List<string>();
private foo(){}
public static void doSomething(){..}
public foo getInstance(){
if(instance!=null){
return instance;
}
}
}
答案 0 :(得分:1)
您的方法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.
}
}
答案 1 :(得分:1)
你可以,你只是没有给doSomething()
返回类型。
答案 2 :(得分:1)
这是为支持它的语言实现Singleton模式的非惰性方法。这样做是完全可以接受的,特别是因为它是实现线程安全的Singleton的方法之一。但是,如果您的Singleton对象很昂贵(请参阅lazy initialization)来创建,那么以这种方式创建它可能不合适。