【问题标题】:Static image variable across multiple classes跨多个类的静态图像变量
【发布时间】:2011-10-04 20:32:21
【问题描述】:

我目前正在使用 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 会为每个类返回正确的静态图像

【问题讨论】:

    标签: c# oop static virtual class-hierarchy


    【解决方案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”存在于代码段中,而不是数据段中,并且根据定义是“静态的”(或共享的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 2012-03-15
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      相关资源
      最近更新 更多