MethodA 的公共方法,则按下面的示例所示调用该方法:

 
UtilityClass.MethodA();

就是说,通过指定类名称和方法名称来应用类成员,如下示例所述。

 
 
double dub = -3.14;
Console.WriteLine(Math.Abs(dub));
Console.WriteLine(Math.Floor(dub));
Console.WriteLine(Math.Round(Math.Abs(dub)));

// Output:
// 3.14
// -4
// 3


静态构造函数仅调用一次,在程序驻留的应用程序域的生存期内,静态类一直保留在内存中。

 

 

下表介绍静态类的主要特性:

  • 仅包含静态成员。

  • 无法实例化。

  • 是密封的。

  • 实例构造函数。

编译器将保证不会创建此类的实例。


静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量(除非在方法参数中显式传递)。

静态字段有两个常见的用法:一是记录已实例化对象的个数,二是存储必须在所有实例之间共享的值。

静态方法可以被重载但不能被重写,因为它们属于类,不属于类的任何实例。

不需要对象实例。

C# 不支持静态局部变量(在方法范围内声明的变量)。

通过在成员的返回类型之前使用 static 关键字可以声明静态类成员,如下面的示例所示:

 
public class Automobile
{
    public static int NumberOfWheels = 4;
    public static int SizeOfGasTank
    {
        get
        {
            return 15;
        }
    }
    public static void Drive() { }
    public static event EventType RunOutOfGas;

    // Other non-static fields and properties...
}

若要访问静态类成员,应使用类名而不是变量名来指定该成员的位置,如下面的示例所示:

 
Automobile.Drive();
int i = Automobile.NumberOfWheels;

如果类包含静态字段,请提供在加载类时初始化这些字段的静态构造函数。

但是,两者之间的性能差异在大多数时候并不明显。

相关文章: