我有以下代碼有關呼叫
List<WorkingRecord> recordListz = new List<WorkingRecord>();
-----other unrelated code----------
recordListz = IF_Export(out ifRecCount,out WrittenRecords);
for (int i = 0; i < recordListz.Count; i++)
{
//do something
}
recordListz創建OK(良好的排序,但後來更多)環錯誤,IF_Export方法retuns名單確定,然後如果我把斷點for循環並將鼠標懸停在recordListz對象上,它看起來很好(其中有10條記錄),計數也報告10條記錄。但是,只要我嘗試執行循環,聲稱「對象未設置爲對象的實例」(非列表中的對象爲空)的代碼錯誤。此外,如果我在這一點上快速注意對象,它聲稱值爲[''爲空]。
現在就與在第一時間創建recordListz對象的問題....這裏實際上是recordListz的實例和方法調用之間的一些其他代碼(完全無關,上面的代碼)。本來我有下面的代碼
List<WorkingRecord> recordListz = IF_Export(out ifRecCount,out WrittenRecords);
但是這導致的「對象不設置到對象的實例」的錯誤,即使被調用的方法返回一個完全正常的名單(通過放置一個斷點確認方法的返回線)。
我再爆發出來以下
List<WorkingRecord> recordListz = new List<WorkingRecord>();
recordListz = IF_Export(out ifRecCount,out WrittenRecords);
但是這個差錯在第一行與「對象不設置到對象的實例」。我有完全相同的行在IF_Export方法中可以正常工作,並且與調用它的代碼處於同一個類中...
將代碼行移動到代碼頂部可以阻止此錯誤發生,但是然後導致循環錯誤。
究竟是怎麼回事,我以前從未見過。
----------------------- UPDATE -------------------
好吧,如果我有以下代碼
用,如果我有以下代碼-----other unrelated code----------
List<WorkingRecord> recordLista = new List<WorkingRecord>();
List<int> WrittenRecords=new List<int>();
List<WorkingRecord> recordListz = new List<WorkingRecord>();
recordListz = IF_Export(out ifRecCount,out WrittenRecords);
for (int i = 0; i < recordListz.Count; i++)
{
//do something
}
「對象未設置爲一個對象
然而實例
-----other unrelated code----------
List<int> WrittenRecords=new List<int>();
List<WorkingRecord> recordListz = new List<WorkingRecord>();
recordListz = IF_Export(out ifRecCount,out WrittenRecords);
for (int i = 0; i < recordListz.Count; i++)
{
//do something
}
的recordListz實例線路故障然後recordListz實例化仍然錯誤,但recordLista實例化工作正常!
另外,如果我有以下代碼
-----other unrelated code----------
List<int> WrittenRecords=new List<int>();
List<WorkingRecord> recordLista = new List<WorkingRecord>();
List<WorkingRecord> recordListz = new List<WorkingRecord>();
recordListz = IF_Export(out ifRecCount,out WrittenRecords);
for (int i = 0; i < recordListz.Count; i++)
{
//do something
}
recordLista也能正常工作!
--------另一個更新------
如果我把下面的代碼
-----other unrelated code----------
List<int> WrittenRecords=new List<int>();
List<WorkingRecord> recordLista = new List<WorkingRecord>();
List<WorkingRecord> recordListz = new List<WorkingRecord>();
recordLista = IF_Export(out ifRecCount,out WrittenRecords);
for (int i = 0; i < recordLista.Count; i++)
{
//do something
}
現在recordLista實例化的錯誤..... .....
--------更新3 ---------------
好吧,我發現在這一點奇怪的事情正在發生。
代碼坐鎮內線的if語句
if (dsExportRecords != null && dsExportRecords.Tables[0].Rows.Count != 0)
dsExportRecords是一個數據集。如果我將代碼立即放在if語句中,那麼會發生奇怪的事情,但如果它緊接在if語句之前,那麼一切都很好。
你可以發佈IF_Export的代碼嗎? – Elior
在'IF_Export'調用之後緊接着'recordListz'是什麼?它可能是'空'嗎?請注意,'new List()'不會被使用,除非'------其他不相關的代碼-------'在某處使用該列表。 –
@Marc Gravell。在調用IF_Export之後,recordListz會填充10條記錄,正如我所說的,如果我在for循環中斷它仍然被填充並且計數爲10,那麼只有當循環實際執行時它纔會變爲null。 – coolblue2000