在c#中实例化一个单例

时间:2016-09-23 20:50:49

标签: c# design-patterns

我试图用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;
    }

我还有一个在mario的构造函数中实例化的idlestate类:

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

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

1 个答案:

答案 0 :(得分:4)

你有一个循环依赖... 在实例化Mario时,你实例化一个调用Mario.Instance的IdleState,实例化一个新的Mario并重复。