三、静态构造函数

  (1) 用于对静态字段、只读字段等的初始化。

  (2) 添加static关键字,不能添加访问修饰符,因为静态构造函数都是  私自有的。

  (3) 类的静态构造函数在给定应用程序域中至多执行一次:只有创建 类的实例或者引用类任何静态成员才激发静态构造函数 .

  (4) 静态构造函数是不可继承的,而且不能被直接调用。

  (5) 如果类中包含用来开始执行的 Main 方法,则该类的静态构造函 数将在调用 Main 方法之前执行。任何带有初始值设定项的静态字段,则在执行该类的静态构造函数时,先要按照文本顺序执行那些初始值设定项。

  (6) 如果没有编写静态构造函数,而这时类中包含带有初始值设定的静态字段,那么编译器会自动生成默认的静态构造函数。

  (7) 无参数的构造函数可以与静态构造函数共存。尽管参数列表相同, 但一个属于类,一个属于实例,所以不会冲突。

  MSDN对静态构造函数的解释:   静态构造函数用于初始化任何静态数据,或用于执行仅需执行一次的特定操作。在创建第一个实例或引用任何静态成员之前,将自动调用静态构造函数。   静态构造函数具有以下特点:

  (1)静态构造函数既没有访问修饰符,也没有参数。

  (2)在创建第一个实例或引用任何静态成员之前,将自动调用静态构造

  (3)函数来初始化类。

  (4)无法直接调用静态构造函数。

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

  (6)静态构造函数的典型用途是:当类使用日志文件时,将使用这种构造函数向日志文件中写入项。  (7)静态构造函数在为非托管代码创建包装类时也很有用,此时该构造函数可以调用 LoadLibrary 方法。

  静态类和类成员用于创建无需创建类的实例能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,可以使用静态类。

  静态类

  类可以声明为 static,指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET.Framework 公共语言运行库 (CLR) 自动加载。  使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该 使用静态类来包含那些方法。

  静态类的主要功能如下:

  它们仅包含静态成员。

  它们不能被实例化。

  它们是密封的。

  它们不能包含实例构造函数。

  因此,创建静态类与创建仅包含静态成员和私有构造函数的类基本相同。私有构造函数阻止类被实例化。  使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。

  静态类是密封的,因此不可被继承。它们不能从除 Object 外的任何类中继承。静态类不能包含实例构造函数;但是,它们可以具有静态构造函数。

  何时使用静态类

  假设有一个 CompanyInfo 类,它包含用于获取有关公司名称和地址信息的下列方法。

class CompanyInfo
{
public string GetCompanyName() { return "CompanyName"; }
public string GetCompanyAddress() { return "CompanyAddress";
}
//...
}

  不必将这些方法附加到该类的具体实例。因此,您可以将它声明为静态类,而不是创建此类的不必要的实例:

static class CompanyInfo
{
public static string GetCompanyName() { return "CompanyName"; }
public static string GetCompanyAddress() { return "CompanyAddress";
}
//...
}