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 回答