1:静态类只用于包含静态成员的类型,不能被实例化,我们可以直接使用它的属性与方法,静态类最大的特点就是共享。静态类的特性是防止继承,防止外部来NEW。它相当于一个sealed abstract类。
2:静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。
3:类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR) 自动加载。
4:使用静态类来包含不与特定对象关联的方法。例如,创建一组不操作实例数据并且不与代码中的特定对象关联的方法是很常见的要求。您应该使用静态类来包含那些方法。
5:总结静态类的主要功能如下:
它们仅包含静态成员。
它们不能被实例化。
它们是密封的。
它们不能包含实例构造函数(C# 编程指南)。
静态类不能使用abstract或sealed修饰符。
静态类默认继承自System.Object根类,不能显式指定任何其他基类。
静态类不能指定任何接口实现。
静态类的成员不能有protected或protected internal访问保护修饰符。
6:因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数和虚基类阻止类被实例化。如下
class TimeUtilClass
{
// Redefine the default ctor as private to prevent creation.
private TimeUtilClass (){}
public static void PrintTime()
{
Console.WriteLine(DateTime.Now.ToShortTimeString());
}
public static void PrintDate()
{
Console.WriteLine(DateTime.Today.ToShortDateString());
}
}
// Define type as abstract to prevent creation
abstract class TimeUtilClass
{
public static void PrintTime()
{
Console.WriteLine(DateTime.Now.ToShortTimeString());
}
public static void PrintDate()
{
Console.WriteLine(DateTime.Today.ToShortDateString());
}
}
使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实利。