现在的位置: 首页 > 综合 > 正文

关于静态构造函数

2012年07月15日 ⁄ 综合 ⁄ 共 717字 ⁄ 字号 评论关闭
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test1
{
    /*
     * C#静态构造函数既没有访问修饰符,也没有参数。

     * 在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数来初始化类。

     * 无法直接调用静态构造函数。

     * 在程序中,用户无法控制何时执行静态构造函数。

     * C#静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。

     * C#静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。 
     
     */

    public class A
    {
        public static int X;
        static A()
        {
            X = B.Y + 1; //②跳到static B()执行  
            Console.WriteLine("static A()..."); //⑤输出static A()...
        }
    }


    public class B
    {
        public static int Y = A.X + 1; //④它会跳到static A(),但是static A()在执行过程中
                                       //A.X还是默认值0,所以Y=1  跳回②继续执行 得X=2    
        static B()
        {
            Console.WriteLine("static B()..."); //③输出static B()...
        }
    }

    public class C
    {
        public static void Main()
        {
            int a = A.X; //①跳到static A()执行

            int b = B.Y; //⑥static B()已经执行过一次,所以直接输出结果 b=1
            Console.WriteLine("X={0},Y={1}", a, b);
        }
    }

}

运行结果:

抱歉!评论已关闭.