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.
}
}