.dll中发生未处理的types为“System.StackOverflowException”的exception

我正在开发一个Windows应用程序在C#中。 在我的应用程序中,我使用了一个静态类。

以下是代码:

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; } } 

我不明白在这里使用一个明确命名的字段返回到属性会得到什么。 我会删除vValue并声明这样的属性:

 public static object Value { get; set; } 

2件事情:

  1. 您忘记了您已经创建了vValue字段。

  2. 不要使属性递归(除非真正需要,而且在迭代之后可以解析)。 在这里你调用Value属性的Value属性。

 public static string HexValue 

在上面的行中使用StringBuilder而不是字符串