2009-05-26 65 views
0

我有一個類「地址」具有以下檢查時:「索引數組的範圍之外」檢查非數組變量

if(thisAddress == null) 
    thisAddress = new Address(); 

當代碼運行時,我得到「索引之外數組的邊界「在第一行。如果我刪除了IF語句,我會在第二行發現錯誤。

該類來自Linq to SQL,但我已經擴展它。這個工作之前,我不知道爲什麼它突然開始發生。 thisAddress是UserControl中的一個私有變量。

任何想法?

+0

thisAddress是什麼類型的變量? – 2009-05-26 21:34:55

回答

0

想通了。顯然我遺漏了一條重要的信息。該代碼位於控件屬性的get {}部分中。該錯誤是代碼中的另一行(我使用split()),但調試器指向get {}語句的第一行。

1

代碼與二進制文件不同步。
嘗試重新編譯包含usercontrol的程序集。

DB中有什麼變化,你認爲可以打破LINQ to SQL映射?

+0

聰明的演繹! – mquander 2009-05-26 21:37:43

0

通常,linq語句是懶惰地執行的,或者當它們被使用時而不是當你編寫鏈接時。因此,在If語句後面執行的代碼實際上就是錯誤所在。

如果是這種情況,那麼你可以嘗試進入語句(它可以使用對thisAddress類的等式檢查),調試器應該顯示你正在執行的linq。

另一種方法和我主要使用的方法是將調試器設置爲在拋出異常時中斷,而不是在未處理時拋出,這是跟蹤這類問題的一種很好的方法。 (在VS中拋出調試器/異常時打勾)。

希望能幫到