为什么使用静态类?

时间:2010-02-09 08:54:32

标签: c# static static-classes

我对静态类和静态方法有疑问。从MSDN我理解“静态类和类成员用于创建可以在不创建类实例的情况下访问的数据和函数。”

因此,如果我们不想将一个类与一个实例相关联,我们将把它作为静态。这是唯一的优势吗?任何人都可以指导我进入静态类的实时场景。

课堂上的一些时间(不是静态的)我发现了静态方法。静态方法在实际中为实例提供了多少优势/性能优势。

6 个答案:

答案 0 :(得分:19)

对于实用程序类,它们很棒。如你所述,它们与全球状态相似。因此对于没有状态的类,为了性能优势,类应该是静态的。

另一方面,静态类很难测试(如果它们包含状态)。多态性和其他OO概念也丢失了。

明智地使用。

答案 1 :(得分:6)

static 关键字应用于类是C#语言约定,它对CLR没有任何特殊意义。它只是确保所有成员都是静态的,并且您不会意外地使用 new 关键字创建该类的实例。

静态方法的优点在this thread.

中讨论

答案 2 :(得分:2)

IMO静态类是伪装的过程式编程。不一定是坏事,但它并不是非常好的。注意functional decomposition antipattern

答案 3 :(得分:1)

静态类非常适合定义静态方法。这是经典的“实用类”方法。但是,要非常小心地在静态类中存储状态(即定义字段)。在我们的多线程世界中,除非您同步访问静态字段,否则这会导致不可预测的程序行为。

答案 4 :(得分:0)

静态属性主要用于介绍运行代码的Context。 并且您可以在每个.NET堆栈中找到对此的确认 ASP.NET - HttpContext.Current
线程 - Thread.CurrentThread
WinForms - WindowsFormsSynchronizationContext.Current
WPF - 调度员

对我来说静态类只是实用方法的容器。

答案 5 :(得分:0)

静态类全局化特定变量,使代码在处理过程中更容易处理。 因此,在基础级别,我们更喜欢使用静态类。