编程语言
首页 > 编程语言> > C#-设置变量时堆栈溢出

C#-设置变量时堆栈溢出

作者:互联网

我正在使用MEF框架编写程序来创建插件.尝试在其中一个插件中设置变量时,出现堆栈溢出异常.

插件中的变量定义为公共字符串bnick {get {return bnick;} set {bnick = value;}}

主程序中的调用代码:

 public void SetUpPlugins()
        {
        foreach (Plugin p in plugins)
            {
            p.bnick = nick;
            p.HostProgram = this;
            }
        }

使用调试器,我确定p.bnick = nick行仅被调用一次.而且它永远不会到达下一行.

为什么这会填满堆栈,我该如何解决?

解决方法:

public string bnick {get {return bnick;} set {bnick = value;}} 

在这里,您要在setter的正文中再次分配bnick,从而导致堆栈溢出.您是否打算创建实例变量,例如

private string bnick = "";
public string Bnick 
{
  get 
  { 
   return bnick;
  } 
  set 
  { 
    bnick = value;
  }
} 

注意:在C#中,约定是在PascalCase中编写属性.

标签:mef,c
来源: https://codeday.me/bug/20191030/1970021.html