在 asp.net/c# 中,作为多人连接到站点的服务器端解决方案,我有多个类。但是,如果它们保持非静态,我最终只会创建其中一个对象。我想知道将它们设为静态类是否更有效,或者将它们保留为非静态并创建 1 个对象并使用它。
谢谢。
在 asp.net/c# 中,作为多人连接到站点的服务器端解决方案,我有多个类。但是,如果它们保持非静态,我最终只会创建其中一个对象。我想知道将它们设为静态类是否更有效,或者将它们保留为非静态并创建 1 个对象并使用它。
谢谢。
类和静态类不可互换。
您的静态类在对您的服务器的请求之间共享。它们也与应用程序域一样长。
类实例是不同的,将为每个请求单独创建,每个请求都有自己的数据。
静态类可以稍微快一点,因为不需要每次都创建实例,但在大多数情况下差异可以忽略不计。由于数据在请求之间共享并且存储时间更长,因此静态类可能会出现数据同步和内存使用问题。
静态类会更快。轻微地。但是非静态类为您提供了极大的灵活性,放弃它将是一种耻辱。你可能永远不需要它,但如果你需要它,很高兴知道它就在那里。
例子:
有一天,您可能需要其中一个类的两个或多个副本。今天是你整个宇宙的东西可能是明天系统的一小部分。今天的太阳,明天只是十万颗星星中的一颗。
您可能会发现向方法传递单个实例的修改副本很方便。这使您可以将编写的代码与官方的单个实例一起用于其他用途。
非静态类可以扩展其他类和接口。您的几个单实例类可能想要实现一个接口,以便它们有时可以相互替换。并且几个可能共享相同的功能并希望从另一个类继承。
(而且肯定还有很多其他好的理由。)