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