gpt4 book ai didi

c# - 在子类调用中返回基类的方法返回?

转载 作者:行者123 更新时间:2023-11-30 18:57:16 24 4
gpt4 key购买 nike

我正在创建一个 C# 框架,其中(几乎)我的所有类都将基于一个抽象基类。该基类包含一些私有(private)设置的属性,其中之一是 bool 值 Garbage

在 XNA 的绘制循环中,如果基类的 Garbage 属性设置为 true,我不希望任何子类在它们各自的 Draw() 方法中执行代码。我尝试通过以下实现来做到这一点:

抽象基类:

public virtual void Draw(GameTime GameTime, SpriteBatch SpriteBatch)
{
if (Garbage) return;
}

继承类:

public void Draw(GameTime GameTime, SpriteBatch SpriteBatch, Color OverlayColor, float Scale)
{
base.Draw(GameTime, SpriteBatch);

//Other code here...
}

因为基类的 Draw 方法在我的子类中的实际代码之前被调用,所以它会遇到 return 语句,我希望在我的子类的 Draw() 调用中继续执行该语句。然而,这并没有发生。

有什么方法可以达到我想要的效果,而不需要添加“if (Garbage) return;”限制每个继承类的 Draw() 方法的顶部?

最佳答案

您可能会考虑的一件事是拥有两种方法。您可以在未被重写的抽象基础上使用您的 Draw 方法,然后定义一个名为 PerformDraw() 的抽象 protected 方法,您的继承者会重写该方法。

抽象基础绘制看起来像:

public void Draw(GameTime GameTime, SpriteBatch SpriteBatch)
{
if (!Garbage) PerformDraw(GameTime, SpriteBatch);
}

这让您可以覆盖绘制行为,但会强制所有继承者使用“垃圾”检查。

关于c# - 在子类调用中返回基类的方法返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8916368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com