目录
静态构造函数
我们在使用类中的静态成员时,先要初始化这些成员。 在声明静态成员时、可以同时提供一个初始值。 但有时候我们需要执行更复杂的初始化操作, 这应该怎么办呢?
我们可以把构造函数声明成static的, 一般来说, 静态的构造函数初始化类的静态字段。
关于静态构造函数应注意的有:
- 那么一个类只能有一个静态构造函数,而且不能带参数、没有返回值。 也不能有访问修饰符(比如private)。 而且声明时使用static 关键字作为前辍。
- 那么一个类既可以有静态构造函数也可以有实例构造函数。
- 跟静态成员函数类似, 静态构造函数不能访问所在类的实例成员, 所以也不能使用this访问器。
不能在程序中显式调用静态构造函数,系统会自动调用它们,在:
- 只要一个类有静态构造函数,当我们创建第一个类实例之前,都会调用静态构造函数、
- 只要一个类有静态构造函数,在引用该类的任何静态成员之前
在这两种情况下,会首先调用静态构造函数, 之后实例化类或访问静态成员。应注意的是: 其实我们创建了多个个类实例, 其静态构造函数都只会调用一次。
下面看一个程序代码:
namespace Ch05Ex03
{
class RandomNum
{
static int RandomKey;
int aa;
int bb;
static RandomNum()
{
aa = 17;//错误,静态构造函数不可以访问非静态字段
bb = 18; //错误,静态构造函数不可以访问非静态字段
RandomKey = 15;
WriteLine("静态构造函数被调用!");