如何引用还没有初始化的变量?

How to reference variables that haven't been initialized yet?

假设我有这个设置:

public class Game
{
    public static World World;
    public static Camera Camera;
    public static Player Player;

    public Game()
    {
        World = new World();
        Camera = new Camera();
        Player = new Player();
    }
}

在相机构造函数中,我使用世界对象来定位相机,但是我还需要在世界构造函数中访问相机。我不能只使用 Main.Camera 因为它还没有被初始化。我该如何解决这个问题?有没有我可以用来避免这种循环依赖问题的编程模式?

只需更改初始化顺序

public class Game
{
    public static World World;
    public static Camera Camera;
    public static Player Player;

    public Game()
    {
        Camera = new Camera();
        World = new World(Camera);
        Player = new Player();
    }
}

如果存在相互依赖(两者相互依赖),则说明您的设计存在问题(循环依赖反模式)。您可能需要重新考虑您的设计。尽量不要制作一个保存所有状态的“全局对象”。这也是一种设计反模式。您需要提供详细信息(在单独的问题中)以获得特定提示。