什么是静态构造函数?
静态构造函数从字面上就知道它也是构造函数的一种,那静态构造函数和构造函数有什么不同呢?要了解静态构造函数首先就要先明确构造函数。构造函数,顾名思义,是用来创建和构造类或者结构的函数,每当创建类或者结构时,将会调用其构造函数(相关概念取自微软官网文档对构造函数的描述)。类或者结构可能具有采用不同参数的多个构造函数,即相同的类或者结构,可能会有多个不同的构造函数负责去创建这个类或者结构,这些构造函数可以是无参的,也可以是包含有多个不同参数的方法。
当我们想要创建相关类或者结构的实例的时候,CLR(公共语言运行时)就会根据我们传入的参数(无参或者有参)去实例化相关的类和结构,我们每创建相关的对象实例的时候就会调用其相关的构造函数去创建它,借此我们引出相关的概念:实例级别的构造函数
构造函数可以相应地分为:①实例级别的构造函数 ②类级别的构造函数
⭐ 实例级别的构造函数:当我们每次新创建对象实例的时候就会调用到的构造函数,这类构造函数是实例级别的构造函数,类比于做炸鸡时,每块炸鸡都经历过腌(腌制)、挂(挂浆)、裹(裹粉)、炸(油炸)这四个步骤,这四个步骤就好比是炸鸡的“构造函数”(的相关逻辑),即每创建一个炸鸡实例都会调用到炸鸡的构造函数。
⭐ 类级别的构造函数:区别于实例级别的构造函数,类级别的构造函数就引申出我们今天所要讨论的主角:静态构造函数。类级别的构造函数不同于实例级别的构造函数,类级别的构造函数仅仅会在首次创建该类的实例或者引用该类的静态成员时被调用。
引用微软官网文档对静态构造函数的描述:静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作,将在创建首个实例或引用任何静态成员之前自动调用静态构造函数。什么意思?静态构造函数仅仅会在这个类首次被实例化,或者该类中所包含的静态成员被引用前被调用且仅会被调用一次,且当静态构造函数和其它实例级别的构造函数同时存在的时候,静态构造函数先于其它实例级别的构造函数被执行,这说明名当我们多次创建同一个类的实例时,静态构造函数仅会在创建第一个实例的时候被执行一次,而实例构造函数在每次创建实例的时候都会被调用执行。
类比于做炸鸡的时,在进行腌(腌制)、挂(挂浆)、裹(裹粉)、炸(油炸)这四个步骤之前,还有起锅烧油等其它准备步骤需要做,而起锅烧油等其它准备步骤就相当于炸鸡的“静态构造函数”(的相关逻辑),起锅烧油等其它准备步骤在炸鸡的整个制作流程中一定会做且仅会做一次,这就对应了静态构造函数中用于初始化任何静态数据,或执行仅需执行一次的特定操作的相关概念。
静态构造函数的特点
由此我们总结静态构造函数的相关特点: