我正在用C#开发Windows应用程序。在我的应用程序中,我使用了一个静态类。
下面是代码:
public static class clsNumber
{
private static object vValue;
public static object Value
{
get
{
return Value;
}
set
{
Value = value;
}
}
public static string HexValue
{
get
{
try
{
return Microsoft.VisualBasic.Conversion.Hex(vValue);
}
catch
{
return Convert.ToString(vValue);
}
}
set
{
Value = Microsoft.VisualBasic.Conversion.Val("&H" + value);
}
}
}
从另一个类别中,设置上述类别的“HexValue”的值。下面是代码行:
iStick = sOutPut.Substring(0, 8);
clsNumber.HexValue = iStick;
执行上面的代码行时,出现以下错误:
"An unhandled exception of type 'System.StackOverflowException' occurred in <.....>.dll"
谁能帮我解决这个问题?
提前致谢。
最佳答案
您在这里有一个非终止的递归:
public static object Value
{
get
{
return Value;
}
set
{
Value = value;
}
}
getter中的
return Value
行以递归方式调用getter,这会导致堆栈溢出。对于二传手也是如此。我想你的意思是:
public static object Value
{
get
{
return vValue;
}
set
{
vValue = value;
}
}
我看不到从此处使用显式命名的字段返回属性所获得的 yield 。我将删除
vValue
并声明如下属性:public static object Value { get; set; }
关于c# - .dll中发生了 'System.StackOverflowException'类型的未处理异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10024072/