Анализатор обнаружил, что у потенциально пустой коллекции вызван метод, выбрасывающий исключение, если в коллекции нет элементов.
Чтобы лучше разобраться в проблеме, рассмотрим пример:
public static bool ComparisonWithFirst(List<string> list, string strForComparison) { string itemForComparison = null; if (list != null && !list.Any()) { itemForComparison = list.First(); } .... }
При попытке получить первый элемент из коллекции будет выброшено исключение типа 'InvalidOperationException'. Внутри then-ветви коллекция будет пустой, так как выполняется проверка, что в 'list' нет элементов.
Исправленный вариант:
public static bool ComparisonWithFirst(List<string> list, string strForComparison) { string itemForComparison = null; if (list != null && list.Any()) { itemForComparison = list.First(); } .... }
Подобная ошибка может возникать и при передаче пустой коллекции в метод, который не ожидает этого.
public static void ProcessList(List<string> list) { if (list.Any()) return; CompareFirstWithAll(list); } public static void CompareFirstWithAll(List<string> list) { string itemForComparison = list.First(); .... }
Из-за опечатки в методе 'ProcessList' коллекция 'list' передаётся в метод 'CompareFirstWithAll' пустой. Метод 'CompareFirstWithAll' не ожидает передачи в него пустой коллекции.
Исправленный вариант:
public static void ProcessList(List<string> list) { if (!list.Any()) return; CompareFirstWithAll(list); }
Данная диагностика классифицируется как: