gpt4 book ai didi

c# - 如何解决 StackOverflowException

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:27 25 4
gpt4 key购买 nike

我尝试写这个类:

public class ModelManager
{
public OmniacareHomeProductionEntities _db;

public CategoriaManager categoriaManager
{
get { return categoriaManager; }
set
{
if (categoriaManager == null)
{
categoriaManager = new CategoriaManagerImpl();
}
}
}

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(ModelManager));
public ModelManager()
{
_db = new OmniacareHomeProductionEntities();
}
}

CategoriaManager 是一个接口(interface),CategoriaManagerImpl 是一个实现 CategoriaManager 的类。

我在这种模式下使用 ModelManager 类:
ModelManager modelManager = new ModelManager();
modelManager.categoriaManager.saveLocalCategory(category, true);

所以当我尝试运行这段代码时,我在这一行有一个 StackOverflowError
get 
{
return categoriaManager;
}

我的错误在哪里?你能帮助我吗?

最佳答案

你的问题显然在这里

  public CategoriaManager categoriaManager 
{
get
{
return categoriaManager;
}
set
{
if (categoriaManager == null)
{
categoriaManager = new CategoriaManagerImpl(); //HERE !!!!!!!!!
}
}
}

成员的名称与属性的名称相同,这样更改,例如:
    public CategoriaManager CatManager //NAME OF HE PROPERTY ISCHANGED !!!!
{
get
{
return categoriaManager;
}
set
{
if (categoriaManager == null)
{
categoriaManager = new CategoriaManagerImpl();
}
}
}

一般准则:
  • 对于属性,使用从大写开始的名称
  • 对于字段,使用从小写
  • 开始的名称

    所以你的代码会像这样:
    ModelManager modelManager = new ModelManager();
    modelManager.CatManager.saveLocalCategory(category, true);

    关于c# - 如何解决 StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24507427/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com