在c#中实例化Singleton

本文关键字:Singleton 实例化 | 更新日期: 2023-09-27 18:08:46

我试图在c#中实例化一个单例对象。

    private static Mario __instance;
    public static Mario Instance
    {
        get
        {
            if (__instance == null)
            {
                __instance = new Mario(); //TODO correct this vector
            }
            return __instance;
        }
    }
    public Mario() 
    {
        position = Vector2.Zero;
        theatre = XNATheatre.Theatre;
        ActionState = new IdleState();
        PreviousState = ActionState;
        ActionState.Enter(null);
        isFacingRight = true;
    }

我也有一个空闲状态类,正在马里奥的构造函数中实例化:

    public IdleState()
    {
        mario = Mario.Instance;
        Console.WriteLine(mario);
    }

似乎发生的是_instance变量在我的单例中始终保持null,因此它不断返回mario的新实例,与我想要的完全相反。我不太确定如何绕过这个

在c#中实例化Singleton

你有一个循环依赖…当实例化一个Mario时,你实例化了一个调用Mario的IdleState。实例化一个新的马里奥并重复。