静态构造函数的使用

(1)用于对静态字段、只读字段等的初始化。              
(2)添加static关键字,不能添加访问修饰符,因为静态构造函数都是私有的。        
(3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数
(4)静态构造函数是不可继承的,而且不能被直接调用。            
(5)如果类中包含用来开始执行的 Main 方法,则该类的静态构造函数将在调用 Main 方法之前执行。    
    任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。  
(6)如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。

如下例

 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 class A
 {
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  
  
  public static int X;
  static A()
  {
   X=B.Y+1;
  }
 }
 class B
 {
  public static int Y;
  static B()
  {
   Y=A.X+1;
  }
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   Console.Write(A.X);
   Console.Write(B.Y);
   Console.Read();
  }
 }

输出的结果为12

解释

在执行Main之前 执行了B的构造函书,b的构造函数Y=A.X+1;
又执行了A的构造函书X=B.Y+1;
Y的初始值为0 所以先算出X=1
在出y=2
结果是12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值