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";

}

どういうわけかを除いて、ゲッターは各クラスの正しい静止画像を返します

4

1 に答える 1

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;
        }
    }
}

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

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 に答える