我试图用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的新实例,与我想要它的完全相反。我不确定如何解决这个问题。
答案 0 :(得分:4)
你有一个循环依赖... 在实例化Mario时,你实例化一个调用Mario.Instance的IdleState,实例化一个新的Mario并重复。