C#成员变量继承

标签 c# variables inheritance member-variables

我对 C# 有点陌生,但我有相当广泛的编程背景。

我想做的是:为游戏定义不同的 MapTiles。我已经这样定义了 MapTile 基类:

public class MapTile
{
    public Texture2D texture;
    public Rectangle mapRectangle;

    public MapTile(Rectangle rectangle)
    {
        this.mapRectangle = rectangle;
    }
}

然后我像这样定义一个子类 GrassTile:

class GrassTile : MapTile
{
    new Texture2D texture = Main.GrassTileTexture;
    new public Rectangle mapRectangle;

    public GrassTile(Rectangle rectangle) : base(rectangle)
    {
        this.mapRectangle = rectangle;
    }
}

在我的主类中,我正在创建一个新的 maptile,如下所示:

Maptile testTile;
testTile = new GrassTile(new Rectangle(0, 0, 50, 50);

但是,当我尝试渲染此 testTile 时,其纹理最终为空。如果我在 MapTile 中定义纹理,我的代码工作正常,所以它与我之前的实现无关。

那么如何让GrassTile能够修改MapTile的成员变量texture呢?或者让我的主类识别 GrassTile 的纹理而不是 MapTile 我也摆弄了接口(interface),但我不能声明接口(interface)成员变量。 C# 继承还有什么我还没有弄明白的吗?

提前致谢

最佳答案

子类会继承父类的成员。您不需要指定它们。此外,最好使用属性而不是公共(public)字段。

public class MapTile
{
    public Texture2D Texture { get; set; }
    public Rectangle MapRectangle { get; set; }

    public MapTile(Rectangle rectangle)
    {
        MapRectangle = rectangle;
    }
}

public class GrassTile : MapTile
{    
    public GrassTile(Rectangle rectangle) : base(rectangle)
    {
        Texture = Main.GrassTileTexture;
    }
}

关于C#成员变量继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14369232/

相关文章:

c# - Graphics.FillPath() 的问题行为

java - 静态ArrayList总是替换旧值

mysql - 使用@variable 将 MSsQL 转换为 MySql 存储过程

javascript - Javascript对象和继承的首次尝试: is it correct

c# - 记录多实例应用程序最佳实践?

c# - 关于 Enumerable/List 的评估

c# - 将 vector/数组从非托管 C++ 传递到 C#

c++ - 在成员变量上使用std::enable_if或类似方法

postgresql - 表继承 : Enforcing unique constraints across partitions?

javascript - 帕雷尼佐是什么意思?