﻿# V3179\. Calling element access method for potentially empty collection may result in exception\.

Анализатор обнаружил, что у потенциально пустой коллекции вызван метод, выбрасывающий исключение, если в коллекции нет элементов\.

Чтобы лучше разобраться в проблеме, рассмотрим пример:

```cpp
public static bool ComparisonWithFirst(List<string> list,
                                       string strForComparison)
{
  string itemForComparison = null;

  if (list != null && !list.Any())
  {
    itemForComparison = list.First();
  }
  ....
}
```

При попытке получить первый элемент из коллекции будет выброшено исключение типа 'InvalidOperationException'\. Внутри then\-ветви коллекция будет пустой, так как выполняется проверка, что в 'list' нет элементов\.

Исправленный вариант:

```cpp
public static bool ComparisonWithFirst(List<string> list,
                                       string strForComparison)
{
  string itemForComparison = null;

  if (list != null && list.Any())
  {
    itemForComparison = list.First();
  }
  ....
}
```

Подобная ошибка может возникать и при передаче пустой коллекции в метод, который не ожидает этого\.

```cpp
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' не ожидает передачи в него пустой коллекции\.

Исправленный вариант:

```cpp
public static void ProcessList(List<string> list)
{
  if (!list.Any())
    return;

  CompareFirstWithAll(list);
}
```