我正在使用MEF框架编写程序来创建插件。尝试在其中一个插件中设置变量时,出现堆栈溢出异常。
插件中的变量定义为public string 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;}}
在这里,您要在设置器的主体中再次分配
bnick
,从而导致堆栈溢出。您是否打算创建实例变量,例如private string bnick = "";
public string Bnick
{
get
{
return bnick;
}
set
{
bnick = value;
}
}
注意:在C#中,约定是在PascalCase中编写属性。
关于c# - 设置变量时堆栈溢出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17384530/