【问题标题】:Static or non-static class?静态类还是非静态类?
【发布时间】:2015-04-12 11:46:51
【问题描述】:

我目前正在开发一个由多个类组成的项目(控制台应用程序)。这些类都不包含任何属性。它们只包含一些方法。

例子:

假设我有 2 个类,一个是具有 main 方法的 Program.cs。另一个类 Worker.cs 具有提供必要功能的所有方法。

Worker.cs 只有一些方法,没有别的。

目前,在主函数中,我使用类名调用方法:

Worker.method1(); Worker.method2(param1, param2);

我的问题是: 我应该创建一个类的对象并调用它吗?还是应该调用类本身的方法?

使用静态类而不是非静态类对性能有影响吗?

没有特定于我需要跟踪的对象的信息。

【问题讨论】:

  • 如果worker实际上是程序的一个实体,你在不同的方法中使用了很多,我会创建一个类的实例。当您只使用此类的一种方法时,我更同意使用静态类。我认为,这一切都与课程在您的程序中所扮演的角色有关。
  • 如果你的类是绝对无状态的并且你不需要更复杂的场景(比如依赖注入的无状态实例类),那么让这个类保持静态。如果您对性能考虑感兴趣,请阅读stackoverflow.com/questions/12279438/…
  • 在运行时根本不重要,CLR 没有“静态类”的概念。它是纯粹的 C# 语法糖。它只是帮助您避免添加实例成员并帮助客户端程序员创建类的实例。当你花足够的时间思考你的程序设计时,你总是会做对的。

标签: c# oop static non-static


【解决方案1】:

只有当您打算保持某些状态在类的所有实例之间共享时,您才需要一个类。

如果由于执行或与执行相关而没有信息要保留,则创建实例没有意义,除非您想将此类用作依赖注入或多态/派生的参考。

【讨论】:

    猜你喜欢
    • 2011-06-11
    • 2014-01-17
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    相关资源
    最近更新 更多