我在迭代一组非可空对象时得到一个null异常。
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元素是一个正常的行为?填充列表时是否可以添加空项?
答案 0 :(得分:4)
是的,可以将null
添加到List<T>
,T
是参考类型。什么都不能阻止某人:
List<ReconFact> facts = new List<ReconFact>();
facts.Add(null);
你可以先检查一下:
foreach (var fact in facts.Where(f => f != null))
// ...
答案 1 :(得分:2)
是的,List
可以包含空值,数组和其他几个集合也可以包含空值。
它不会破坏迭代本身,但它会破坏依赖于元素不为空的{ }
内的任何代码。
List<String> s = new List<String>();
s.Add("foo");
s.Add(null);
s.Add("bar");
编辑:等等,“非可空对象”是什么意思?
答案 2 :(得分:0)
我认为问题在于你的逻辑。您只需初始化名为fact
的Recontent列表。
所以它的计数一直都是0.请检查一下。