且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为什么我不能声明 C# 方法虚拟和静态?

更新时间:2022-03-03 08:24:56

虚拟静态方法没有意义.如果我调用 HelperClass.HelperMethod();,为什么我会期望调用一些随机子类的方法?当您有 HelperClass 的 2 个子类时,解决方案真的会崩溃——您会使用哪一个?

Virtual static methods don't make sense. If I call HelperClass.HelperMethod();, why would I expect some random subclass' method to be called? The solution really breaks down when you have 2 subclasses of HelperClass - which one would you use?

如果您想拥有可覆盖的静态类型方法,您可能应该使用:

If you want to have overrideable static-type methods you should probably go with:

  • 单例,如果您希望全局使用相同的子类.
  • 如果您希望应用程序的不同部分具有不同的行为,则可以使用带有工厂或依赖项注入的传统类层次结构.

选择最适合您情况的解决方案.

Choose whichever solution makes more sense in your situation.