2

在 asp.net/c# 中,作为多人连接到站点的服务器端解决方案,我有多个类。但是,如果它们保持非静态,我最终只会创建其中一个对象。我想知道将它们设为静态类是否更有效,或者将它们保留为非静态并创建 1 个对象并使用它。

谢谢。

4

2 回答 2

2

类和静态类不可互换。

您的静态类在对您的服务器的请求之间共享。它们也与应用程序域一样长。

类实例是不同的,将为每个请求单独创建,每个请求都有自己的数据。

静态类可以稍微快一点,因为不需要每次都创建实例,但在大多数情况下差异可以忽略不计。由于数据在请求之间共享并且存储时间更长,因此静态类可能会出现数据同步和内存使用问题。

于 2013-07-11T18:12:21.907 回答
1

静态类会更快。轻微地。但是非静态类为您提供了极大的灵活性,放弃它将是一种耻辱。你可能永远不需要它,但如果你需要它,很高兴知道它就在那里。

例子:

有一天,您可能需要其中一个类的两个或多个副本。今天是你整个宇宙的东西可能是明天系统的一小部分。今天太阳,明天只是十万颗星星中的一颗。

您可能会发现向方法传递单个实例的修改副本很方便。这使您可以将编写的代码与官方的单个实例一起用于其他用途。

非静态类可以扩展其他类和接口。您的几个单实例类可能想要实现一个接口,以便它们有时可以相互替换。并且几个可能共享相同的功能并希望从另一个类继承。

(而且肯定还有很多其他好的理由。)

于 2013-07-11T20:23:22.890 回答