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();
}
}
}
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();
}
}
}
运行结果截图: