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

本文关键字:访问 外部 方法 事件 实例化 | 更新日期: 2023-09-27 18:13:29

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

如果我这样做:

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

新实例在此方法之外不可用。是否有任何方法在方法中实例化Game,并在其他地方访问实例?或者有什么变通办法吗?问题是,我不希望Game实例化之前,这个按钮被点击。

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

带延迟实例化的单例模式在这里是你的朋友。

请看我的回答作为例子。

您可以创建一个静态属性来返回存在的唯一的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;