V3162. Suspicious return of an always empty collection.
Анализатор обнаружил, что выражение 'return', всегда возвращает пустую коллекцию, которая была определена как локальная переменная. Чаще всего это происходит из-за того, что в коллекцию забыли добавить элементы.
Пример:
List<string> CreateDataList()
{
List<string> list = new List<string>();
string data = DoSomething();
return list;
}
В данном примере забыли добавить элемент 'data' в 'list'. Поэтому метод всегда будет возвращать пустую коллекцию. Исправленный вариант:
List<string> CreateDataList()
{
List<string> list = new List<string>();
string data = DoSomething();
list.Add(data);
return list;
}
Иногда программисты создают метод, который только и делает, что создает и возвращает коллекцию. Например, так:
List<List<CustomClass>> CreateEmptyDataList()
{
var list = new List<List<CustomClass>>();
return list;
}
Или так:
List<List<CustomClass>> CreateEmptyDataList()
{
return new List<List<CustomClass>>();
}
Это используется для некоторых паттернов программирования, или если тип коллекции имеет очень длинное название. Анализатор понимает такие ситуации и не выдаёт на них предупреждения.