您的第一个示例将无法编译,静态类必须具有所有静态成员。
仅使用一些静态方法和静态类之间的区别在于您告诉编译器该类不能被实例化。第二个示例可以创建 DEF 类的对象,即使其中没有实例方法。ABC 类不能用 new 操作符实例化(会得到一个编译时错误)。
何时使用静态类
假设您有一个 CompanyInfo 类,其中包含以下方法来获取有关公司名称和地址的信息。
C#
class CompanyInfo
{
public string GetCompanyName() { return "CompanyName"; }
public string GetCompanyAddress() { return "CompanyAddress"; }
//...
}
这些方法不需要附加到类的特定实例。因此,您可以将其声明为静态类,而不是创建此类不必要的实例,如下所示:
C#
static class CompanyInfo
{
public static string GetCompanyName() { return "CompanyName"; }
public static string GetCompanyAddress() { return "CompanyAddress"; }
//...
}
使用静态类作为与特定对象无关的方法的组织单元。此外,静态类可以使您的实现更简单、更快,因为您不必创建对象即可调用其方法。以有意义的方式组织类内部的方法很有用,例如 System 命名空间中的 Math 类的方法。