我有一个类Game
,为了序列化目的,它不能是静态的。我想从方法中实例化Game
并在代码中的其他位置访问新实例。
如果我试试这个:
public void btnNewGame_Click(object sender, EventArgs e)
{
Game game = new Game();
}
新方法在此方法之外无法使用。有没有办法在方法中实例化Game
并在其他地方访问实例?或者有任何变通方法吗?问题是我不希望在单击此按钮之前实例化Game
。
任何建议都将受到赞赏。
答案 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;