0

Gameシリアル化のために静的にできないクラスがあります。Gameメソッドからインスタンス化し、新しいインスタンスにコード内の他の場所からアクセスできるようにしたいと考えています。

私がこれを試してみると:

    public void btnNewGame_Click(object sender, EventArgs e)
    {
        Game game = new Game();
    }

新しいインスタンスは、このメソッドの外では使用できません。Gameメソッド内でインスタンス化し、インスタンスを他の場所からアクセスできるようにする方法はありますか? または、回避策はありますか?Game問題は、このボタンがクリックされる前にインスタンス化されたくないということです。

アドバイスをいただければ幸いです。

4

2 に答える 2

1

ここでは、遅延インスタンス化を使用したシングルトン パターンが役に立ちます。

例として、私のこの回答を確認してください。

于 2013-05-14T23:46:17.823 に答える
1

存在する唯一のGameオブジェクトを返す静的プロパティを作成できます。例えば:

public class Game
{
    private static Game instance;
    public static Game Instance
    {
        get
        {
            if (instance == null)
                instance = new Game();
            return instance;
        }
    }
}

そして、次のように使用します。

Game theOneAndOnlyGame = Game.Instance;

または、Gameクラスを変更できない場合:

public static class MyGameEngine
{
    private static Game game;
    public static Game Game
    {
        get
        {
            if (game == null)
                game = new Game();
            return game;
        }
    }
}

そして、次のように使用します。

Game theOneAndOnlyGame = MyGameEngine.Game;
于 2013-05-15T00:04:20.040 に答える