我有以下代码
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 被创建好(好吧,但稍后会更多),IF_Export 方法重新调整列表,然后如果我将断点放在 for 循环上并将鼠标悬停在 recordListz 对象上,它看起来很好(其中有 10 条记录)和计数也报告 10 条记录。但是,一旦我尝试执行循环,代码错误就会声称“对象未设置为对象的实例”(列表中的对象都不是空的)。另外,如果我此时快速观察对象,它声称该值为 ['' 为 null]。
现在谈谈首先创建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 方法中调用它工作正常并且与调用它的代码在同一个类中......
将这一行移到代码的顶部可以阻止它出错,但这会导致循环错误。
这到底是怎么回事,我以前从未见过。
- - - - - - - - - - - -更新 - - - - - - - - - -
好的,如果我有以下代码
-----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 实例化行错误为“对象未设置为对象的实例
但是,如果我有以下代码
-----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
}
然后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 语句之前,那么一切都很好。