Static之静态构造器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//静态构造器
//1.只能有一个静态构造器
//2.静态构造器上不允许使用public和private等修饰符
//3.静态构造函数必须无参数
//4.可以提供一个具有与静态构造器相同的原型的非静态构造器,先调用静态版本
//5.在访问类的任何静态成员(函数或数据)之前执行静态构造器
namespace StaticConstructor
{
class SomeClass
{
public static int x;
public int y;
//只能有一个静态构造器
//static public SomeClass(); //语法错误:静态构造器上不允许使用public和private等修饰符
//static SomeClass(int i, int j); //语法错误:静态构造函数必须无参数
static SomeClass()
{
x = 1;
//this.y=2; //语法错误:静态构造器不能访问实例成员(包括this指针)
Console.WriteLine("SomeClass Initialized");
}
//与一般重载规则相反,可以提供一个具有与静态构造器相同的原型的非静态构造器
//在创建类的第一个静态实实例之前将调用两个构造器,先调用静态版本
public SomeClass()
{
Console.WriteLine("Non-static ctor");
}
//在访问类的任何静态成员(函数或数据)之前执行静态构造器
public static void Foo()
{
Console.WriteLine("Foo");
}
}
class Program
{
static void Main(string[] args)
{
SomeClass sc = new SomeClass();
SomeClass.Foo();
Console.WriteLine(SomeClass.x);
Console.ReadKey();
}
}
}
运行结果截图:

浙公网安备 33010602011771号