2012-04-05 146 views
2

我正在C#中開發Windows應用程序。在我的應用程序中,我使用了一個靜態類。發生在.dll中的'System.StackOverflowException'類型的未處理異常

下面是代碼:

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" 

任何人都可以請幫助我解決這個? 在此先感謝。

+8

Value屬性getter使用Value屬性。其中使用了Value屬性getter。其中使用了Value屬性getter。其中使用了Value屬性getter。其中使用了Value屬性getter。其中使用了Value屬性getter。其中使用了Value屬性getter。其中使用了Value屬性getter。其中使用Value屬性getter ... Kaboom !!!! – 2012-04-05 07:11:55

回答

10

您有一個非終端遞歸這裏:

public static object Value 
{ 
    get 
    { 
      return Value; 
    } 
    set 
    { 
      Value = value;  
    } 
} 

,吸附劑中的線return Value調用的getter和遞歸導致堆棧溢出。對於二傳手同樣如此。

我想你的意思是:

public static object Value 
{ 
    get 
    { 
      return vValue; 
    } 
    set 
    { 
      vValue = value;  
    } 
} 

我看不出有什麼可從使用明確指定的字段此處返回財產獲得的。我刪除vValue並宣佈這樣的特性:在上面一行使用StringBuilder而不是字符串

+0

它解決了這個問題。非常感謝。 :) – user1018213 2012-04-05 07:26:53

-2
public static string HexValue 

  1. 你忘了,你已經創建vValue字段。

  2. 不要使屬性遞歸(除非確實需要,並且在某些迭代後可以解析)。這裏你在Value屬性中調用Value屬性。

1

2東西

public static object Value { get; set; } 
相關問題