我正在用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/

10-11 13:42