2017-01-19 41 views
2

我試圖調試我的列表中的一些信息,這些信息是由我製作的類的對象組成的。當我嘗試檢查它,它停止調試,並給出了下面的代碼在輸出窗口:C#代碼-2147023895(0x800703e9)在調試時

程序< 6880>「MyApp.vshost.exe」已經與代碼-2147023895(0x800703e9)退出。

當我搜索的號碼,我發現這一點:

遞歸太深;堆棧溢出。

當我讀到這個,在我看來,我有一個無限循環或類似的東西。

當我搜索這個,我得到MSDN,它說,聯繫供應商。還有就是我....

另一個話題我就發現計算器這是一個:Runtime exception, recursion too deep

但是,這是有關循環像..很長一段時間。

礦井只是一個列表,其中保存了一些信息。

這是類

class LinePiece 
{ 
    private string type; 
    private string elementNumber; 
    private int beginX, beginY; 
    private int endX, endY; 
    private int diameter; 
    private string text; 

    public string Type { get { return type; } } 
    public string ElementNumber { get { return ElementNumber; } } 
    public int BeginX { get { return beginX; } } 
    public int BeginY { get { return beginY; } } 
    public int EndX { get { return endX; } } 
    public int EndY { get { return endY; } } 

    public LinePiece(string a_type, string a_eleNr, int a_beginX, int a_beginY, int a_endX, int a_endY) 
    { 
     type = a_type; 
     elementNumber = a_eleNr; 
     beginX = a_beginX; 
     beginY = a_beginY; 
     endX = a_endX; 
     endY = a_endY; 
    } 
} 

我創建像這樣的列表:List<LinePiece> l_linePieces = new List<LinePiece>();

,並添加一行:

LinePiece LP = new LinePiece(s_lpType, s_EleNr, i_X1, i_Y1, i_X2, i_Y2); 
l_linePieces.Add(LP); 

當我在這一點上調試,我點擊l_linePieces它顯示對象的數量。但是當我嘗試打開其中一個時,它停止併發出錯誤。

此外,當我不調試它,它都很好,它沒有錯誤等,但我想檢查一下列表中的值。

那麼我該如何解決這個問題呢?

+0

很好放。讓我輕聲感謝。 「聯繫供應商,那是我......」 – Andez

回答

7

此屬性的getter ...

public string ElementNumber { get { return ElementNumber; } } 

...調用自身。

爲了避免這種情況在未來,你應該使用自動屬性,它看起來像這樣:

public string ElementNumber { get; set; } 

編譯器會發明一個隱藏的後備字段。

您可以初始化在構造函數自動屬性如下:

public LinePiece(string a_type, string a_eleNr, 
       int a_beginX, int a_beginY, 
       int a_endX, int a_endY) 
{ 
    Type = a_type; 
    ElementNumber = a_eleNr; 
    BeginX = a_beginX; 
    BeginY = a_beginY; 
    EndX = a_endX; 
    EndY = a_endY; 
} 

如果你想只從類本身進行設置(即在構造函數中),然後使用private set

public string ElementNumber { get; private set; } 
+0

這就是它......整天在軟件上工作有時候很累。你只是看不到像這樣的littlle缺陷... thx的幫助 – Bart

+0

@Bart這是自動屬性可以爲你節省一些挫折的地方:'公共字符串ElementNumber {get;私人設置; }';那麼你根本不需要顯式的私有字段(編譯器會爲你創建一個)。 – Kyle

+0

什麼是「私人設置」的使用?當我沒有提到設置它也告訴你不能設置它。 – Bart