18

汎用ディクショナリオブジェクトをテストして、それが空かどうかを確認するにはどうすればよいですか?次のようにコードを実行したいと思います。

while (reportGraphs.MoveNext())
{
    reportGraph = (ReportGraph)reportGraphs.Current.Value;
    report.ContainsGraphs = true;
    break;
}

reportGraphオブジェクトのタイプはSystem.Collections.Generic.Dictionaryです。このコードを実行すると、reportGraphsディクショナリは空になり、MoveNext()はすぐにNullReferenceExceptionをスローします。空のコレクションを処理するよりパフォーマンスの高い方法がある場合は、ブロックの周りにtry-catchを配置したくありません。

ありがとう。

4

2 に答える 2

33

一般的な辞書の場合は、Dictionary.Countを確認するだけです。空の場合、カウントは0になります。

しかし、あなたの場合、reportGraphsそれは-のように見えますIEnumerator<T>-あなたがあなたのコレクションを手で列挙する理由はありますか?

于 2010-01-18T20:25:32.083 に答える
6

empty辞書と。には違いがありnullます。MoveNext空のコレクションを呼び出しても、は発生しませんNullReferenceException。あなたの場合、あなたはテストできると思いますreportGraphs != null

于 2010-01-18T20:25:15.677 に答える