我的基类中有一个返回bool的方法,我希望用bool来确定派生类中相同的重写方法会发生什么。
基地:
public bool Debt(double bal)
{
double deb = 0;
bool worked;
if (deb > bal)
{
Console.WriteLine("Debit amount exceeds the account balance – withdraw cancelled");
worked = false;
}
else
bal = bal - deb;
worked = true;
return worked;
}
派生
public override void Debt(double bal)
{
// if worked is true do something
}
请注意,bal来自我之前制作的构造函数
答案 0 :(得分:10)
您可以使用base
关键字调用基类方法:
public override void Debt(double bal)
{
if(base.Debt(bal))
DoSomething();
}
如上面的注释中所示,您需要确保在基类中存在具有相同签名(返回类型和参数)的虚方法,或者从派生类中删除override关键字。
答案 1 :(得分:2)
if(base.Debt(bal)){
// do A
}else{
// do B
}
base
指基类。因此base.X
引用基类中的X
。
答案 2 :(得分:2)
调用base
方法:
public override void Debt(double bal)
{
var worked = base.Debt(bal);
//Do your stuff
}
答案 3 :(得分:1)
正如其他几位提到的那样,您可以使用base.Debt(bal)
来调用基类方法。我还注意到你的基类方法没有被声明为虚拟。默认情况下,C#方法不是虚拟的,因此除非您在基类中将其指定为虚拟,否则不会在派生类中重写它。
//Base Class
class Foo
{
public virtual bool DoSomething()
{
return true;
}
}
// Derived Class
class Bar : Foo
{
public override bool DoSomething()
{
if (base.DoSomething())
{
// base.DoSomething() returned true
}
else
{
// base.DoSomething() returned false
}
}
}
Here's msdn对虚拟方法的评价