迭代列表时出现空引用异常
本文关键字:异常 引用 列表 迭代 | 更新日期: 2023-09-27 18:34:39
我在迭代一组不可为空的对象时遇到空异常。
List<ReconFact> facts = new List<ReconFact>();
// ...populating facts
int count = 0;
foreach (var fact in facts)
{
Console.WriteLine(++count);
try
{
context = AddToContext(context, fact, count, 100, true);
}
catch (Exception e)
{
Console.WriteLine(e.Message); // Null Exception Raised at some point
}
}
这怎么可能?我不知道迭代列表可以提供空元素是正常行为吗?填充列表时是否可以添加空项目?
是的,可以将null
添加到T
是引用类型的List<T>
。没有什么能阻止某人:
List<ReconFact> facts = new List<ReconFact>();
facts.Add(null);
您可以先检查一下:
foreach (var fact in facts.Where(f => f != null))
// ...
是的,List
可以包含 null,数组和其他几个集合也可以。它不会破坏迭代本身,但会破坏{ }
内依赖于元素不为 null 的任何代码。
List<String> s = new List<String>();
s.Add("foo");
s.Add(null);
s.Add("bar");
编辑:等等,"不可空对象"是什么意思?
我认为问题出在你的逻辑上。您只需初始化名为 fact
的 Recontent 列表。所以它的所有时间都是 0。请检查一下。