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#的乐趣就在于跟随微软一步一步体验体验写代码方式的改变。“

原文地址:https://www.cnblogs.com/Benjamin/p/3135696.html