首页 新闻 会员 周边

静态构造函数的作用

0
[已解决问题] 解决于 2013-11-07 08:58

最近看书,看到静态构造函数的时候,发现其不能从程序中显示调用,而通常静态构造函数初始化类的静态字段,这样的话,为何不直接在静态字段定义的时候直接为其赋值呢?

问题补充:

那么就是说静态构造函数只是一个显示的写法,直接赋值类似语法糖?

混沌熊猫的主页 混沌熊猫 | 初学一级 | 园豆:174
提问于:2013-11-06 15:06
< >
分享
最佳答案
0

直接赋值的结果就是它们会被放到静态构造函数中执行.

奖励园豆:5
Launcher | 高人七级 |园豆:45045 | 2013-11-06 16:13
其他回答(2)
0

以后会遇到的话,和一般的构造函数类似的呀,赋值只是构造函数的一个功能。有时候,你需要在静态构造函数中写一些逻辑,或是执比一些代码,比如工厂模式中很多的,要读取配置文件,然后把根据配置的文件初使化一些常用的对象,比如单例模式中的唯一对象,或者spring中的session什么的。反正一句话是,有些逻辑也要放在构造函数中,静态的也是。

angelshelter | 园豆:9887 (大侠五级) | 2013-11-06 20:44

昨天后来我也想到还会有逻辑了,要是当时有悬赏的话肯定会再分豆的,抱歉啊

支持(0) 反对(0) 混沌熊猫 | 园豆:174 (初学一级) | 2013-11-07 08:59
0

楼上说的很详细了,也学习了,我也来补充几点:

1.静态构造函数是不可继承的,而且不能被直接调用。

2.如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。

3.静态构造函数执行的确切时间和顺序是不确定的:
3.1一个类的静态构造函数在这个类的任何实例被创建前执行。
3.2一个类的静态构造函数在类的任何静态成员被引用前执行。
3.3一个类的静态构造函数在它的所有派生类的静态构造函数执行之后执行。
3.4一个类的静态构造函数从不会被执行一次以上

4.如果类中包含用来开始执行的Main方法,则该类的静态构造函数将在调用Main方法之前执行。

袁家小黑球 | 园豆:1045 (小虾三级) | 2013-11-06 22:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册