【发布时间】:2010-10-10 19:56:51
【问题描述】:
在 C# 中,我有基类 Product 和派生类 Widget。
Product 包含一个静态方法 MyMethod()。
我想从静态方法 Widget.MyMethod() 调用静态方法 Product.MyMethod()。
我不能使用 base 关键字,因为它只适用于实例方法。
我可以显式调用 Product.MyMethod(),但如果我稍后将 Widget 更改为从另一个类派生,我必须修改该方法。
C# 中是否有一些类似于 base 的语法允许我从派生类的静态方法调用基类的静态方法?
【问题讨论】:
-
这个特定方法是静态的有什么原因吗?
-
解决问题的最佳方法是重命名
Widget.MyMethod。首先考虑Widget.MyMethod和Product.MyMethod是否正在做相同的事情以使它们的名称相同。如果它们是等效的(对用户来说意味着相似的事情),那么您唯一的选择就是使它们成为非静态方法。 . 虽然我认为它会很有用,但 C# 没有静态成员继承的概念。现在想想FancyWidget的孙子班,FancyWidget.MyMethod应该叫什么?如果您认为Widget.MyMethod则 C# 没有这方面的东西(我认为任何 OOP 语言也没有)。
标签: c# inheritance static base derived-class