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中编写属性.