跨多个类的静态图像变量

时间:2011-07-13 20:50:19

标签: c# oop static virtual class-hierarchy

我目前正在使用C#,并且我有一个基类(项目符号)需要有一个变量和后续的getter(图像),因为另一个类需要这种行为(上电)以便正确显示。然后将子弹扩展为制造具有不同行为的许多不同子弹。但是,每个子弹扩展类每个类只需要一个图像(不是每个实例),因为它永远不需要在类似类的子弹之间进行更改,并且屏幕上会有数百个,因此空间是个问题。即,我需要一个基类中的对象,然后在该类的扩展中是静态的。有没有办法在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为每个类返回正确的静态图像

1 个答案:

答案 0 :(得分:1)

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

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

覆盖抽象属性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”值存在于代码段中,而不是数据段中,并且根据定义是“静态”(或共享)。