Как я тестирую универсальный объект словаря видеть, пусто ли это? Я хочу выполнить некоторый код следующим образом:
while (reportGraphs.MoveNext())
{
reportGraph = (ReportGraph)reportGraphs.Current.Value;
report.ContainsGraphs = true;
break;
}
Объект reportGraph имеет систему типов. Наборы. Универсальный. Словарь При выполнении этого кода тогда reportGraphs словарь пуст, и MoveNext () сразу бросает NullReferenceException. Я не хочу помещать выгоду попытки вокруг блока, если существует более производительный способ обработать пустой набор.
Спасибо.
Если это универсальный словарь, вы можете просто проверить словарь. Кругся . Счет будет 0, если он пуст.
Однако в вашем случае Reportgraphs
выглядит как это IENUMERATOR
- Есть ли причина, по которой вы перечисляете свою коллекцию вручную?
Существует разница между пустым
словарем и NULL
. Вызов MOVENEXT
на пустой коллекции не приведет к NullReferenceException
. Я думаю, в вашем случае вы можете проверить, если ReportGraphs! = NULL
.
Как сказал Дарин, ReportGraphs
NULL
, если он выбрасывает NullReferenceException
. Лучшим способом было бы, чтобы он никогда не был нулевым (то есть, убедитесь, что он инициализируется в конструкторе вашего класса).
Еще один способ сделать это (чтобы избежать перечисления явно) было бы использовать формулизацию
:
foreach (KeyValuePair<Key,Value> item in reportGraphs)
{
// do something
}
[редактирование] Обратите внимание, что этот пример также предполагается, что ReportGraphs
никогда не NULL
.