effective c#读书笔记之二 静态成员的初始化
1、时间顺序:静态成员的初始化=》非静态成员的初始化==》构造函数=》基类成员初始化=》基类构造函数
2、因为静态成员初始化是由CLR调用的,如果出错,则程序会崩溃。所以,常常使用构造函数来初始化静态成员。
static MySingleton( ) { try { _theOneAndOnly = new MySingleton( ); } catch { // Attempt recovery here. } }
3、一段好的测试代码,测试对静态成员初始化的理解。
class A { public static int X = B.Y; static A() { ++X; } } class B { public static int Y = A.X; static B() { ++Y; } }
Debug.WriteLine(A.X.ToString());
Debug.WriteLine(B.Y.ToString());
输出的结果是:2和1。
有一点必须知道:静态成员的初始化和构造函数只会执行一次。第二次访问时,就不再执行了。
ps:”学习Java的乐趣就在于用成熟的框架解决业务中的问题,学习Python的乐趣在于写出简洁的代码,学习C#的乐趣就在于跟随微软一步一步体验体验写代码方式的改变。“