【问题标题】:Is there any advantage to declaring a class static in C#? [duplicate]在 C# 中声明类静态有什么好处吗? [复制]
【发布时间】:2014-04-11 14:41:06
【问题描述】:

在 C# 中,您可以将类声明为静态,这要求所有成员也是静态的。这样做有什么好处(例如性能)吗?还是只是确保您不会在类中意外声明实例成员?

【问题讨论】:

  • 只是一个小评论/轶事:“意外声明实例成员”是在 C# 2.0 中引入静态类的原因。最初它不支持它,并且在 .net Framework 1.1 中,Environment 类有一个实例属性,但没有公共 ctor,这使得该属性无法访问,除非通过需要完全信任的反射。

标签: c# .net


【解决方案1】:

还是只是确保您不会在类中意外声明实例成员?

就是这样,但不止于此:

  • 它通过根本没有实例构造函数来防止实例化(而 所有 其他类都有一个构造函数 - 无论是您声明的构造函数还是隐式无参数的构造函数)
  • 它清楚地表达了您的意图
  • 没有任何东西可以从您的类派生(它既是密封的又是抽象的)
  • 没有任何东西可以声明您的类类型的字段
  • 没有任何东西可以将您的类型用作泛型类型参数

基本上,它告诉编译器和其他开发人员“这永远不会被实例化 - 所以如果看起来你正在尝试使用实例,那么你做错了。”

我怀疑有任何 性能 好处,但以上所有对我来说已经足够了 :)

哦,你也只能在静态类中声明扩展方法...

【讨论】:

  • 第一点可能有点误导。你忘了静态构造函数:)
  • @MoslemBenDhaou:已修复,尽管根据我的经验,没有修饰符的“构造函数”几乎总是用于隐式表示“实例构造函数”。
【解决方案2】:

【讨论】:

    猜你喜欢
    • 2012-06-29
    • 2013-03-05
    • 2021-04-10
    • 2012-02-10
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多