1

我在迭代一组不可为空的对象时遇到空异常。

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
  }
}

这怎么可能?我不知道迭代列表可以提供空元素是正常行为吗?填充列表时是否可以添加空项?

4

3 回答 3

4

是的,可以添加nullList<T>whereT是引用类型。没有什么能阻止某人:

List<ReconFact> facts = new List<ReconFact>();
facts.Add(null);

您可以先检查一下:

foreach (var fact in facts.Where(f => f != null))
// ...
于 2013-10-10T09:15:33.003 回答
2

是的,aList可以包含空值,数组和其他几个集合也可以。它不会破坏迭代本身,但会破坏{ }依赖元素不为空的任何代码。

List<String> s = new List<String>();
s.Add("foo");
s.Add(null);
s.Add("bar");

编辑:等等,“不可为空的对象”是什么意思?

于 2013-10-10T09:14:56.933 回答
0

我认为问题在于你的逻辑。您只需初始化名为 的 Recontent 列表fact。所以它的计数一直都是 0。请检查一下。

于 2013-10-10T10:24:31.020 回答