请教个基础问题,一个类里面既有静态构造函数,又有空构造函数,那么在初始化或者引用类的静态成员时,是怎么个执行顺序呢? 本帖最后由 jinianjun 于 2013-10-08 13:58:24 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 静态构造函数会在需要的时候执行且只执行一次,执行的时机包括构造类实例前和访问类静态成员前。因此这个例子里静态构造函数会最先执行。默认public的是指在没有为类定义构造函数时,编译器为该类生成构造函数,如果该类不是抽象类,那么生成的空构造函数是public的。而这里显式声明了私有的构造函数,就不会生成公共的空构造函数了。 只要你一使用该类(可以不new),就会执行静态构造 第一个问题:静态构造函数执行完了以后会执行空构造函数吗?第二个问题:“而这里显式声明了私有的构造函数,就不会生成公共的空构造函数了”,请问怎么显示声明的呢?没有加任何的访问修饰符,默认是private吗? 你每个方法中添加一个输出语句自己看就是了。肯定是静态初始化->静态构造函数->成员初始化->构造函数实际上所谓的初始化是语法糖。class A{ int i = 1; A() { }}其实是class A{ int i; A() { i = 1; }} 正解,第一次申明时执行静态构造函数,且只执行一次。在new的过程中(实例化函数)执行非静态构造函数。 默认是私有的,你需加上public才行public Singleton() { } 到底是public还是private呢?那么类Singleton前面如果不加任何修饰符,默认又是什么的呢? 参考这个文章理解下:http://www.cnblogs.com/zhili/p/SingletonPatterm.html C#调用C++写的Dll的问题,尝试读取或写入受保护的内存。这通常指示其他内存已损坏。 字符类型 int 不接受 5.00 这种格式怎么办 C#中的方法调用出现问题 C#向指定IP发送数据包,请给出简单详细的例子 以word形式打开html文件 请教: 这个错误提示什么意思. 如何实现错误跳转功能? C#中锁屏的功能 请问一下,哪位朋友办过ICP的,给传一个资料行吗 win8/win8.1下通过windows service启动进程问题 vs2010如何打包成个绿色版本,不要安装程序直接运行EXE执行那种 主键用GUID好还是INT好
默认public的是指在没有为类定义构造函数时,编译器为该类生成构造函数,如果该类不是抽象类,那么生成的空构造函数是public的。而这里显式声明了私有的构造函数,就不会生成公共的空构造函数了。
第二个问题:“而这里显式声明了私有的构造函数,就不会生成公共的空构造函数了”,请问怎么显示声明的呢?没有加任何的访问修饰符,默认是private吗?
class A
{
int i = 1;
A() { }
}
其实是
class A
{
int i;
A() { i = 1; }
}
正解,第一次申明时执行静态构造函数,且只执行一次。
在new的过程中(实例化函数)执行非静态构造函数。
public Singleton()
{
}