使用基类方法返回值
本文关键字:返回值 类方法 基类 | 更新日期: 2023-09-27 18:11:37
我的基类中有一个方法返回一个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来自我之前制作的一个构造函数
您可以使用base
关键字调用基类方法:
public override void Debt(double bal)
{
if(base.Debt(bal))
DoSomething();
}
如上面的注释所示,您需要确保基类中有一个具有相同签名(返回类型和参数(的虚拟方法,或者从派生类中删除override关键字。
if(base.Debt(bal)){
// do A
}else{
// do B
}
base
是指基类。所以base.X
是指基类中的X
。
调用base
方法:
public override void Debt(double bal)
{
var worked = base.Debt(bal);
//Do your stuff
}
正如其他几个人所提到的,您可以使用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
}
}
}
以下是msdn对虚拟方法