-1
私はC#でシングルトンでオブジェクトをインスタンス化しようとしています。Cでシングルトンをインスタンス化する#
public IdleState()
{
mario = Mario.Instance;
Console.WriteLine(mario);
}
何が起こっているようだが、私のシングルトンで_INSTANCE変数は常にnull残っているので、それは新しいインスタンスを返し続ける:
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;
}
また、私はマリオのコンストラクタでインスタンス化されているアイドル状態のクラスを持っています私がそれをしたいのとまったく逆の、マリオの。私はこれを回避する方法が正確にはわかりません。
"私のシングルトンの_instance変数は常にnullのままなので、新しいインスタンスのmarioを返すことができます。" trueの場合、Instanceプロパティはnullを返し、マリオ。私は一歩前進して、いつも「マリオ」の新しいインスタンスが毎回作成されていると思う理由を理解する必要があると思います。 'Instance'プロパティは(スレッドセーフではありませんが)シングルトンを作成します。 – vcsjones
投稿したコードがあれば、最終的に 'StackOverflowException'を取得し、' Mario.Instance'プロパティが返されることはありません。しかし、あなたの問題の記述にはこれは言及されておらず、もし例外を得たならば、スタックトレースを見て回帰呼び出しを見て、何が間違っていたのかを見ることができます。だから、あなたは実際にどんな問題を抱えていますか?良い[mcve]とより明確で明確な問題の説明を入力してください。 –