2011-07-13 11 views
1

私は現在C#で作業していますが、別のクラスがその動作(電源投入)を順に期待しているため、変数とそれに続くゲッタ(イメージ)を必要とする基本クラス(箇条書き)適切に表示されます。弾丸は、動作が異なるさまざまな弾丸を作るために拡張されます。ただし、すべての箇条書き拡張クラスは、同じクラスの箇条書きの間で変更する必要はないため、クラスごとに1つのイメージ(インスタンスごとではない)しか必要ありません。つまり、基本クラスにオブジェクトが必要です。それは、そのクラスの拡張では静的です。 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"; 

} 

、ゲッターは、お使いのベースクラスの抽象プロパティのゲッターを定義し、各クラス

答えて

1

の正しい静止画像を返します。

派生クラスには、プライベートな静的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; 
     } 
    } 
} 

また、画像は、単純なハードコードされた値である場合:

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

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

それが適していた場合、ここでの利点は、値「広場」は、コード・セグメントではないが存在するということですデータセグメントであり、定義によって「静的」(または共有)である。

関連する問題