静态或动态类?

时间:2013-05-14 22:00:19

标签: c#

这篇文章的后续内容:Need advice on design/structure of a game

我有Game.cs,它基本上拥有我的游戏状态。所有必要的变量都将包含在这里,当说完所有内容以便更容易地保存,加载和开始新游戏时。我的问题是:这个课程应该是静态的还是动态的?我试过动态,但我无法弄清楚在哪里正确实例化它。目前,当在Windows窗体中触发按钮单击事件时,Game.cs被实例化,但之后被视为局部变量,并且无法在其他地方访问它。有没有办法在全球实例化它?或者在这种情况下static的方式是什么?

2 个答案:

答案 0 :(得分:4)

Game 成为实例类:所有内容都应该是实例字段/属性/方法,而不是静态。

在游戏中,您应该只有一个游戏类的实例。您可以将它传递给所有其他类,或者您可以通过将其设置为某个类上的公共静态公共字段来使其全局化。

答案 1 :(得分:3)

根据经验,静态类/方法应该是无状态的。如果您想从任何地方访问您的数据,您应该选择Singleton-Pattern。

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

    private Game()
    {
    }

    private int someData;

    public string SomeMethod()
    {
    }

    // ...
}

然后,在代码中访问它,如下所示:

string myString = Game.Instance.SomeMethod();