在C#中,使用关键字static声明的构造函数被称为静态构造函数。静态构造函数能够实现初始化类所需的操作,而不是初始化实例或对象。
C#类的静态构造函数在给定程序中至多只能执行一次,在程序中第一次执行某事件时,将触发静态构造函数的执行。具体的对应事件如下。
1)创建类的实例。
2)引用类的任何静态成员。
当初始化一个类时,在执行静态构造函数之前,首先将该类中的所有静态字段初始化为它们的默认值,具体如表8-2所示,然后以文本顺序执行各个静态字段的初始化。
如果类中包含用Main()方法,那么该类的静态构造函数将在调用Main()方法之前执行。如果类包含任何在声明时初始化的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始化。
实例24:用静态构造函数输出指定的文本
下面通过一个具体的实例来说明使用静态构造函数的流程。本实例保存在“光盘:daima\8”文件夹内,项目名为jingtai。实例的功能是通过调用静态构造函数输出指定的文本。实例文件的主要代码如下:
上述实例代码的设计流程如下。(www.xing528.com)
1)分别定义类mm、A和B。
2)在类A内定义静态构造函数A(),在类B内定义静态构造函数B()。
3)调用创建的构造函数,输出对应的结果。
执行后将输出显示默认的值,具体如图8-5所示。
图8-5 实例执行结果
从图8-5所示的执行结果可以看出,因为A的静态构造函数的执行是通过调用A.F()触发的,而B的静态构造函数的执行是通过调用B.F()触发的。所以首先执行A,然后再执行B。
多学一招
静态构造函数是非实例调用的,而非静态构造函数需要通过一个实例才能调用,所以在此要严加区别。如果在一个基类中它的继承类有一个静态的构造函数,在实例化继承类的时候,会首先调用继承类的构造函数,然后调用基类的。如果是构造函数,首先调用基类的构造函数,然后再调用继承类的构造函数。
如果要在继承类的静态构造函数中首先调用基类的,可以用一个base关键字来调用。读者可以查阅更多构造函数的相关知识,并尝试对上述实例进行修改,想办法不通过静态的构造函数实现上述功能,还可以对上述实例中的文本进行修改,以设置输出其他指定的文本。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。