来源 C#中静态构造函数的学习

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

以下用例子代码进一步说明: 
/************************************************** 
  *                        静  态  构  造  函  数  练  习 
  *  (1)①②③……为执行顺序 
  *  (2)输出结果:  static  A() 
  *                                  static  B() 
  *                                  X  =  1,  Y  =  2 
  ***************************************************/ 
using  System; 
class  A 

  public  static  int  X; 
  static  A()                      //④  执行完后返回到③ 
  { 
    X  =  B.Y  +  1; 
    Console.WriteLine("static  A()"); 
  } 

class  B 

  public  static  int  Y  =  A.X  +  1;            //③  调用了A的静态成员, 
                                                                                                          //      转到A的静态构造函数----> 
  static  B()                      //②  如果带有初始值设定项的静态字段, 
                            //      执行该类的静态构造函数时, 
                            //      先要按照文本顺序执行那些初始值设定项。 
                            //      转到初始值设定项----> 
  { 
    Console.WriteLine("static  B()"); 
  } 
  static  void  Main()                  //①  程序入口, 
                            //      如果类中包含用来开始执行的  Main  方法, 
                            //      该类的静态构造函数将在调用  Main  方法之前执行。 
                            //      转到B的静态构造函数----> 
  { 
    Console.WriteLine("X  =  {0},  Y  =  {1}",  A.X,  B.Y);//⑤  输出结果 
    Console.ReadLine(); 
  } 

分类:C#/.Net
Tag: C# 学习