【发布时间】:2020-11-28 05:57:52
【问题描述】:
base.OnAllyTurnStart(); 之后的代码即使基本方法返回也会继续执行。如何防止执行基本方法以下的代码?
// BASE METHOD
public virtual void OnAllyTurnStart()
{
if(// if it is not my turn)
return;
}
public override void OnAllyTurnStart()
{
base.OnAllyTurnStart();
// Code bellow should execute only when it's my turn
// ..................................
}
【问题讨论】:
-
如果你不希望该方法中的其他代码运行,那为什么该方法中还有其他代码?
-
@itsme86:我猜代码有时应该运行,但基本实现有早期返回逻辑,应该跳过所有后续处理。
-
好吧,基本方法要么必须设置某种被覆盖方法可以引用的标志,要么开始返回一个可以被覆盖方法检查的值。
-
您只是从基础返回,而不是覆盖的实现。实际上,我建议您彻底重新考虑您的系统。如果你正在寻找一个草率和讨厌的修复,你总是可以将一个 bool 包装到一个类中,然后将该类作为参数传递给 OnAllyTurnStart()。然后,您可以将类中的 bool 设为 false,并在覆盖的 if 语句中使用它来查看逻辑是否应该继续。
标签: c# return overriding virtual base