C# 在c中实例化一个单例#
我试图用c#中的单例来实例化一个对象 我还有一个IDLState类,它正在mario的构造函数中实例化:C# 在c中实例化一个单例#,c#,design-patterns,C#,Design Patterns,我试图用c#中的单例来实例化一个对象 我还有一个IDLState类,它正在mario的构造函数中实例化: public IdleState() { mario = Mario.Instance; Console.WriteLine(mario); } 我的singleton中的_instance变量始终保持为空,因此它不断返回mario的新实例,这与我希望它做的正好相反。我不知道该如何解决这个问题。你有一个循环依赖性。。。 当实例化一个M
public IdleState()
{
mario = Mario.Instance;
Console.WriteLine(mario);
}
我的singleton中的_instance变量始终保持为空,因此它不断返回mario的新实例,这与我希望它做的正好相反。我不知道该如何解决这个问题。你有一个循环依赖性。。。
当实例化一个Mario时,您实例化一个调用Mario的IDLState。实例实例化一个新的Mario并重复。“似乎发生的是,我的singleton中的_Instance变量始终保持null,因此它不断返回Mario的新实例,”如果是这样,则
Instance
属性将返回null,不是Mario的新实例。我认为我们需要返回一步,弄清楚为什么每次都会创建一个新的Mario
实例。您的实例
属性确实创建了一个单例(尽管不是线程安全的)。给定您发布的代码,您最终应该会得到一个StackOverflowException
,并且永远不会看到Mario.Instance
属性返回。但是您的问题描述没有提到这一点,如果您遇到异常,您可以查看堆栈跟踪,查看递归调用,并亲自查看错误。那么,你到底看到了什么问题?请提供一个好的、更具体、更清晰的问题描述。
public IdleState()
{
mario = Mario.Instance;
Console.WriteLine(mario);
}