1

I'm getting a null exception while iterating over a collection of non nullable objects.

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

How is that possible ? I didn't know that iterating over a list could provide null elements is that a normal behaviour ? Is it possible to add a null item when the list is populated ?

4

3 に答える 3

4

はい、参照型であるwhereに追加nullすることは可能です。次のことを妨げるものは何もありません。List<T>T

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

はい、a にListは null を含めることができます。また、配列や他のいくつかのコレクションにも含めることができます。反復自体は壊れませ{ }んが、null でない要素に依存する内部のコードはすべて壊れます。

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

編集:待って、「null 非許容オブジェクト」とはどういう意味ですか?

于 2013-10-10T09:14:56.933 に答える
0

問題はあなたの論理にあると思います。という名前の Recontent のリストを初期化するだけですfact。そのため、そのカウントは常に 0 です。確認してください。

于 2013-10-10T10:24:31.020 に答える