关于静态构造函数
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);
}
}
}
运行结果:


浙公网安备 33010602011771号