.dll中发生了未处理的"System.StackOverflowException"类型异常

use*_*213 2 c# windows

我正在用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);
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

从另一个类中设置上述类的"HexValue"的值.下面是代码行:

iStick = sOutPut.Substring(0, 8);
clsNumber.HexValue = iStick;
Run Code Online (Sandbox Code Playgroud)

在执行上面的代码行时,会出现以下错误:

"An unhandled exception of type 'System.StackOverflowException' occurred in <.....>.dll"
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?提前致谢.

Dav*_*nan 10

这里有一个非终止递归:

public static object Value  
{
     get
     {
          return Value;
     }
     set
     {
           Value = value;      
     }
 }
Run Code Online (Sandbox Code Playgroud)

return Valuegetter中的行以递归方式调用getter,这会导致堆栈溢出.同样对于二传手.

我想你的意思是:

public static object Value  
{
     get
     {
          return vValue;
     }
     set
     {
           vValue = value;      
     }
 }
Run Code Online (Sandbox Code Playgroud)

我没有看到在这里使用明确命名的字段返回属性可以获得什么.我将删除vValue并声明属性如下:

public static object Value { get; set; }
Run Code Online (Sandbox Code Playgroud)