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