如何测试通用字典对象以查看它是否为空?我想运行一些代码如下:
while (reportGraphs.MoveNext())
{
reportGraph = (ReportGraph)reportGraphs.Current.Value;
report.ContainsGraphs = true;
break;
}
reportGraph对象的类型为System.Collections.Generic.Dictionary当运行此代码时,reportGraphs字典为空,MoveNext()立即抛出NullReferenceException。如果有更高效的处理空集合的方法,我不想在块周围放置try-catch。
谢谢。
如果它是一个通用字典,你可以检查Dictionary.Count。如果它为空,则计数为0。
但是,在你的情况下,reportGraphs
看起来像是一个IEnumerator<T>
- 你有没有理由手工列举你的收藏?
empty
字典和null
之间有区别。在空集合上调用MoveNext
不会导致NullReferenceException
。我想在你的情况下你可以测试reportGraphs != null
。
正如达林所说,reportGraphs
是null
,如果它抛出NullReferenceException
。最好的方法是确保它永远不为null(即确保它在类的构造函数中初始化)。
另一种方法(避免显式枚举)将使用foreach
语句:
foreach (KeyValuePair<Key,Value> item in reportGraphs)
{
// do something
}
[编辑]请注意,这个例子也假设reportGraphs
永远不会是null
。