1、如果一个类没有定义静态构造函数,就算它有静态字段,编译器也不会自动给这个类生成一个默认的静态构造函数。
验证如下:
我们来看反编译之后的IL语言:
验证如下:
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace testStaticConstructor
- {
- class B
- {
- public static int Y = 1;
- //静态构造函数这部分是被注释了的
- //static B()
- //{
- // Y = 2;
- //}
- static void Main()
- {
- Console.WriteLine("Y = {0}",B.Y);
- Console.ReadLine();
- }
- }
- }
- .class private auto ansi beforefieldinit B
- extends [mscorlib]System.Object
- {
- .method public hidebysig specialname rtspecialname instance void .ctor() cil managed
- {
- .maxstack 8
- L_0000: ldarg.0
- L_0001: call instance void [mscorlib]System.Object::.ctor()
- L_0006: ret
- }
- .method private hidebysig static void Main() cil managed
- {
- .entrypoint
- .maxstack 8</