C#中的静态构造器

来源:互联网 发布:谷阿莫 知乎 编辑:程序博客网 时间:2024/05/09 23:50

C#中的静态构造器

关键字: 静态构造器

       在C#中有静态构造器,它的作用就是在类被加载的时候用来进行一些静态初始化工作。它不能有参数,不能有修饰符 (永远是private),也不能被调用。只是在类加载的时候被CLR调用。而在JAVA中有静态语句块,它也是用来进行一些静态初始化工作。觉得这两种进制所达到的目的应该是一样的。至于C#中的静态构造器还有以下特性:

1   C#中对静态成员的初始化一定是在执行静态构造器以前执行的。(注意:JAVA中静态代码的执行和静态成员的初始化顺序依赖于书写的顺序)特别值得注意的是如果要对静态成员初始化,但是没有显示的声明一个静态构造子的话,那么编译器会自动帮我们生成一个静态的构造器,并且把静态初始化代码放到静态构造器的第一行。下面以代码来说明一下。

java 代码
  1. class A {   
  2.   
  3.   static {   
  4.        
  5.         System.out.println("i am a static block");   
  6.     }   
  7.     public static int i = p();   
  8.        
  9.        
  10.     static int p(){   
  11.         System.out.println("p");   
  12.         return 1 ;   
  13.     }   
  14. }   
  15.   
  16. class Test{   
  17.   
  18.     public static void main(String [] args){   
  19.        
  20.         System.out.println(A.i);   
  21.     }   
  22. }   上面代码执行结果为:
    i am a static constructor
    p
    1

 

c# 代码
  1. using System;   
  2. class A {   
  3.   
  4.    static A(){   
  5.        
  6.         Console.WriteLine("i am a static constructor");   
  7.     }   
  8.     public static int i = p();   
  9.        
  10.        
  11.     static int p(){   
  12.         Console.WriteLine("p");   
  13.         return 1 ;   
  14.     }   
  15. }   
  16.   
  17. class Test{   
  18.   
  19.     static void Main(){   
  20.        
  21.         Console.WriteLine(A.i);   
  22.     }   
  23. }   以上代码运行结果如下:
    p
    i am a static constructor
    1

 

原创粉丝点击