从方法/事件实例化具有外部可访问性的类

时间:2013-05-14 23:43:21

标签: c#

我有一个类Game,为了序列化目的,它不能是静态的。我想从方法中实例化Game并在代码中的其他位置访问新实例。

如果我试试这个:

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

新方法在此方法之外无法使用。有没有办法在方法中实例化Game并在其他地方访问实例?或者有任何变通方法吗?问题是我不希望在单击此按钮之前实例化Game

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

懒惰实例化的单例模式是你的朋友。

查看this answer of mine以获取示例。

答案 1 :(得分: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;