2010-08-04 69 views

回答

9

Value屬性的getter和setter無窮遞歸 - 他們改成這樣:

public T Value { get; set; } 
+0

+1這是答案。如果你不小心,這是一個容易犯的錯誤。 – 2010-08-04 16:35:24

+0

我討厭編譯器沒有找到這些... – 2010-08-04 16:45:10

+0

這就是它!非常感謝!!!我可以繼續調試我的錯誤代碼的其餘部分=) – CatZilla 2010-08-04 17:29:57

0

一般來說,堆棧溢出意味着你正在遞歸而不回去。不過,我不知道你在哪裏做。我會做的是在幾個戰略位置插入一個Console.WriteLine語句,以查看哪些行被執行以及多久。例如,在Insert的開始處和內部循環中。這應該給你(和我們)更多的信息。

2

已經回答(價值的get/set),但這裏有個小技巧:

在VS.NET中,按CTRL + ALT + E打開Exceptions對話框(取決於您在VS.NET中選擇的配置文件,它也可能在Debug-> Exceptions下)。這可以讓你在拋出某些異常類型時中斷,而不是整個堆棧展開和程序最終崩潰。

對於「公共語言運行時異常」選中「投擲」複選框,點擊確定,然後運行您的程序。你的程序的執行將停止在異常點,這應該使它更加明顯。

在你的情況下,程序破壞你的財產。要查看更多信息,請打開Call Stack wndow(Debug-> Windows-> Call Stack或CTRL + ALT + C)以查看完整堆棧,您會看到您的屬性只是其中的唯一內容。