C#.Static Field And Static Constructor.Autocriticism
静态字段与静态构造函数
static 修饰成员的初始化总是先与实例成员,static成员与该类型相关与类型实例无关。
静态字段
类型中静态字段之间的实例化顺序是按代码中的书写顺序执行。
静态字段先与本类静态构造函数执行;静态字段中使用到的其他类型的静态字段,则递归倒序从最底层实例化静态字段和调用静态构造函数。
静态构造函数
静态构造函数不能被任何修饰符修饰,并且整个生命周期只被调用一次。
静态只读字段
静态只读字段可以在两处被赋值,一次是静态字段本身初始化,另一次是在静态构造函数中修改值,此后永远不允许改变其值。
Program.Entry.Code
static void Main(string[] args) { object oo = new object(); SupperMan man = new SupperMan(); SupperMan man3 = new SupperMan(); }
Autocriticism.Static.Code
1 public static class StaticA 2 { 3 public static double bf = 9.32; 4 public static string va = "va"; 5 public static int vva = 99; 6 7 static StaticA() 8 { 9 } 10 } 11 public static class StaticB 12 { 13 public static string vb = "vb" + StaticA.va; 14 15 static StaticB() 16 { 17 18 } 19 } 20 21 public class SupperMan 22 { 23 public static readonly string ss = "hello"; 24 25 static SupperMan() 26 { 27 Name = StaticB.vb; 28 Name = "supper"; 29 ss += "...。"; 30 Console.WriteLine("static Construct."); 31 } 32 public SupperMan() 33 { 34 //ss += ",,,,"] 35 Name = "man."; 36 Console.WriteLine("object Construct."); 37 } 38 public static string tt = "testet"; 39 }