【问题标题】:Can a static method always be converted to an instance method?静态方法总是可以转换为实例方法吗?
【发布时间】:2011-06-12 13:24:28
【问题描述】:

如果我们可以确定实例是单例,那么静态方法总是可以转换为实例方法吗?对吗?

【问题讨论】:

  • 使用静态方法与实例方法是一个设计问题,如果有理由将其静态化,为什么要将静态方法转换为实例方法?
  • 如果实例是单例,你为什么要打扰?静态类(和静态方法)实际上是单例模式的实现。
  • 如果您必须实例化一个非常复杂的类,而只调用一个绝对不依赖任何状态信息的方法(应该是静态的),那么可能会出现一些性能问题。

标签: c# .net singleton static-methods instance-methods


【解决方案1】:

当然,标记为static 的方法可以转换为实例方法。标记为static 的方法必须是不使用任何特定于实例的状态信息的方法(除非实例作为参数传入)。它们可以重写为实例方法,并且仍然不依赖于特定于实例的状态信息(或改用this)。

【讨论】:

  • 单例类中的 GetInstance() 方法除外 ;)
  • @Matten:不,也可以重写为实例方法。
【解决方案2】:

您当然可以这样做,但您可能会破坏调用静态方法的现有代码。特别是如果该方法是公开可见的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多