8

我对静态类和静态方法有疑问。从 MSDN 我了解到“静态类和类成员用于创建无需创建类实例即可访问的数据和函数”。

因此,如果我们不想在实例上关联一个类,我们会将其设为静态。这是唯一的优势吗?任何人都可以指导我在哪个实时场景中使用静态课程。

在课堂上的某个时间(不是静态的)我正在寻找静态方法。静态方法在实际中比实例方法有什么优势/性能优势。

4

6 回答 6

19

对于实用程序类,它们很棒。正如您所提到的,它们类似于全局状态。因此,对于没有状态的类,为了提高性能,该类应该是静态的。

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

明智地使用。

于 2010-02-09T08:57:47.847 回答
6

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

本主题讨论了静态方法的优点

于 2010-02-09T08:59:43.880 回答
2

IMO 静态类是变相的过程编程。不一定是坏事,但它不是很 OOPly。注意功能分解反模式

于 2010-02-09T09:12:59.237 回答
1

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

于 2010-02-09T09:32:54.050 回答
0

静态属性主要用于引入运行代码的上下文。您可以在每个 .NET 堆栈中找到对此的确认。
ASP.NET - HttpContext.Current
Threading - Thread.CurrentThread
WinForms - WindowsFormsSynchronizationContext.Current
WPF - Dispatcher

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

于 2010-02-09T10:16:51.823 回答
0

静态类使特定变量全球化,使其在代码期间更易于处理。因此,在基本级别上,我们更喜欢使用静态类。

于 2014-02-01T05:17:40.473 回答