静态类的好处

可能重复:
静态类的用途是什么

声明静态类有什么好处?

public static class MyStaticClass { } 

除了“它无法实例化”之外还有其他吗?
为什么你还想要一个静态类,为什么一个类应该是静态的呢?
“任何类都应该被声明为静态,除非它意味着被实例化”这是一个很好的经验法则吗?

如果一个类有静态修饰符,那么:

  • 它使你的意图明确:这不仅仅是一个恰好拥有所有静态成员的类 – 它只是一个只有静态成员的类
  • 您可以防止实例化而不需要私有构造函数来抑制默认的公共构造函数
  • 您不能声明该类型的变量
  • 您不能将该类型用作类型参数(无论如何,IIRC)
  • 如果它是顶级类型,您可以在类型中声明扩展方法

第一点是最重要的,IMO。 您正在向编译器和其他开发人员传达意图。

静态类可用作实用程序函数和常量的容器。 如果类不表示对象并且仅用于此目的,则将其声明为静态是有意义的。

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

取自MSDN直接。 它解释得比我好得多。 这里的关键事实是物体在整个生命中持续存在。

扩展方法也必须用静态类编写。 我倾向于将这些用于字符串扩展或收集扩展。

您需要一个静态类来创建扩展方法。

实用程序类只声明静态方法(如System.IO.File),不能实例化,因此它通常是静态的。

你是对的,我发现它是一个很好的用途。 单身人士是不同的,因为它意味着私下实例化。