问题描述
publicstaticreadonlyStatic_SingletoninstancestaticStatic_Singleton(){instance=newStatic_Singleton();}其中的staticStatic_Singleton()是构造函数吗?下边privateStatic_Singleton(){}也是构造函数,都有什么作用???classStatic_Singleton{///<summary>///变量标记为readonly,这意味着只能在静态初始化期间(此处显示的示例)或在类构造函数中分配变量。//////</summary>publicstaticreadonlyStatic_Singletoninstance=newStatic_Singleton();privateStatic_Singleton(){}//等同于publicstaticreadonlyStatic_SingletoninstancestaticStatic_Singleton(){instance=newStatic_Singleton();}privateStatic_Singleton(){}
解决方案
解决方案二:
privateStatic_Singleton(){}是构造函数,设置为私有就不能直接实例化一般再设置一个共有的CreateInstance()方法,在这个方法里进行实例化publicclassSingleton{privatestaticSingletoninstance;privateSingleton(){}publicstaticSingletonGetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}
解决方案三:
关于静态构造函数,看看这篇http://www.cnblogs.com/eagle1986/archive/2011/11/27/2264931.html
解决方案四:
staticStatic_Singleton()//这个是静态构造函数,在你首次使用Static_Singleton时调用{instance=newStatic_Singleton();}privateStatic_Singleton(){}//这个是构造函数,需要你手动实例化Static_Singleton时调用,就是上面的newStatic_Singleton();
解决方案五:
你这样写应该是懒汉模式,不能解决多线程的问题吧?
解决方案六:
明白了,http://www.cnblogs.com/eagle1986/archive/2011/11/27/2264931.html讲的挺详细,谢了
解决方案七:
在使用静态构造函数的时候应该注意几点: 1、静态构造函数既没有访问修饰符,也没有参数。因为是.NET调用的,所以像public和private等修饰符就没有意义了。 2、是在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,也就是说我们无法直接调用静态构造函数,也就无法控制什么时候执行静态构造函数了。 3、一个类只能有一个静态构造函数。 4、无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个属于类,一个属于实例,所以不会冲突。 5、最多只运行一次。 6、静态构造函数不可以被继承。 7、如果没有写静态构造函数,而类中包含带有初始值设定的静态成员,那么编译器会自动生成默认的静态构造函数。