1

我目前正在使用 C#,并且我有一个基类(项目符号),它需要有一个变量和后续的 getter(图像),因为另一个类需要这种行为(上电)才能正确显示。Bullet 然后将被扩展以制作许多具有不同行为的不同子弹。但是,每个项目符号扩展类每个类(而不是每个实例)只需要一个图像,因为它永远不需要在类似类的项目符号之间更改,并且屏幕上会有数百个项目符号,因此空间是一个问题。即,我需要一个基类中的对象,然后在该类的扩展中是静态的。有没有办法在 C# 中创建它,如果没有,出于好奇,任何其他面向对象的语言?

非常感谢

编辑:例如:

class bullet{
public Image Level
    {
        get { return image; }
        set { image = value; }
    }

}


class spiralBullet : bullet{
static var image = "spiralbullet";


}



class largeBullet : bullet{
static var image = "largebullet";

}

除了不知何故,getter 为每个类返回正确的静态图像

4

1 回答 1

1

在您的基类上定义一个抽象属性 Getter。

在派生类中,有一个私有静态 Image 字段。

覆盖抽象属性 Getter 并返回您的静态图像字段。

public abstract class Bullet
{
    public abstract Image Image { get; }
}

public class SquareBullet : Bullet
{
    private static Image _image /* = Load your image */;

    public override Image Image
    {
        get 
        {
            return _image;
        }
    }
}

或者,如果 Image 是一个简单的硬编码值:

public abstract class Bullet
{
    public abstract string Image { get; }
}

public class SquareBullet : Bullet
{
    public override Image Image
    {
        get 
        {
            return "Square";
        }
    }
}

如果合适的话,这里的优点是值“Square”存在于代码段中,而不是数据段中,并且根据定义是“静态的”(或共享的)。

于 2011-07-13T20:56:05.667 回答