我已经进行了一些搜索,但似乎无法找到与此问题完全匹配的内容。如果我错过了,请重定向我。
在Delphi / Object Pascal中,您有两个概念:
*您可以在上面纠正我。
问题:在C#中,Delphi的类方法(不是静态的)等效吗?我希望能够声明一个无需类实例即可调用的方法-但是我希望能够将基本方法标记为虚方法并在派生类中覆盖它
答案 0 :(得分:3)
类方法-允许您调用该方法而无需 类实例。但是,这些方法仍然允许覆盖 派生类(因此在某种程度上仍带有某些类 信息)。
确定吗?
无论如何,我们拥有的最接近的东西是带有静态方法的类。
public class MyLovelyHorse
{
public static int HowManyLegs()
{
return 4;
}
}
但是我希望能够将基本方法标记为虚 在派生类中覆盖它
对不起,没有办法。 C#中没有工具可以执行此操作。
的时间答案 1 :(得分:1)
在C#中无法做到这一点-思想是静态方法总是针对特定类型调用的,永远不会有实例。这是不正确的,因为您可以将派生类的类型信息传递给采用基本类类型的函数...
如果函数不应该做任何花哨的事情(例如,它仅返回静态值),则可以使用类属性而不是虚拟静态方法来摆脱困境。
答案 2 :(得分:0)
Delphi和C#有一些相似之处。它们都不支持多重继承。
遇到问题时,对于打算隐藏基类的方法实现的方法,可以使用new关键字。
Delphi中的静态方法与C#相同。您不能覆盖静态方法。如果您希望强制执行相同的操作,则C#还附带了static(密封)(对于类)关键字。