2007-10-14
C#中的静态构造器
关键字: 静态构造器在C#中有静态构造器,它的作用就是在类被加载的时候用来进行一些静态初始化工作。它不能有参数,不能有修饰
符 (永远是private),也不能被调用。只是在类加载的时候被CLR调用。而在JAVA中有静态语句块,它也是用来进行一
些静态初始化工作。觉得这两种进制所达到的目的应该是一样的。至于C#中的静态构造器还有以下特性:
1 C#中对静态成员的初始化一定是在执行静态构造器以前执行的。(注意:JAVA中静态代码的执行和静态成员的初始
化顺序依赖于书写的顺序)特别值得注意的是如果要对静态成员初始化,但是没有显示的声明一个静态构造子的话,那
么编译器会自动帮我们生成一个静态的构造器,并且把静态初始化代码放到静态构造器的第一行。下面以代码来说明一
下。
java 代码
- class A {
- static {
- System.out.println("i am a static block");
- }
- public static int i = p();
- static int p(){
- System.out.println("p");
- return 1 ;
- }
- }
- class Test{
- public static void main(String [] args){
- System.out.println(A.i);
- }
- } 上面代码执行结果为:
- i am a static constructor
- p
- 1
c# 代码
- using System;
- class A {
- static A(){
- Console.WriteLine("i am a static constructor");
- }
- public static int i = p();
- static int p(){
- Console.WriteLine("p");
- return 1 ;
- }
- }
- class Test{
- static void Main(){
- Console.WriteLine(A.i);
- }
- } 以上代码运行结果如下:
- p
- i am a static constructor
- 1
通过上面两个简短的例子就说明:虽然这两种机制所达到的目的是一样的。但是在执行顺序上有一定的不同。
发表评论
我的相册
Head first design patterns
共 29 张
共 29 张
最近加入圈子
链接
最新评论
-
C/S & B/S 的区别
8) 太细了
-- by bingdeweiyan -
捕获checked exception后 ...
不至于吧。catch{ } 里面什么也不写,自动跳出返回 ...
-- by google -
Jboss下面bean累JNDI的配 ...
fddfdfdfdf
-- by pwmk -
老天对中国真他妈太不公了 ...
中国的百姓真的很无辜啊!哎
-- by 小嘴冰凉 -
“cannot simultaneously ...
谢谢你,很强悍。。。
-- by lchlrb







评论排行榜