﻿# V3201\. Return value is not always used\. Consider inspecting the 'foo' method\.

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

Рассмотрим синтетический пример:

```cpp
Audio _currentMusic = null;

void Foo1(....)
{
  ....
  _currentMusic = PlayMusic();
}

void Foo2()
{
  if (....)
    _currentMusic = PlayMusic();
}
.... 
void Foo10()
{
  ....
  PlayMusic();      // <=
}
```

В данном примере возвращаемое значение метода 'PlayMusic' используется всегда, кроме одного случая\. Анализатор выдаёт предупреждение, если возвращаемое значение метода игнорируется не более чем в 10% случаев\. При этом отсутствуют признаки того, что оно намеренно не используется\.

В некоторых ситуациях возвращаемое значение действительно не требуется как\-то использовать\. Например, если метод имеет побочные эффекты \(изменение свойств, полей, запись/чтение файла и прочее\), и возвращаемым значением можно пренебречь\. Для улучшения читаемости кода рекомендуется явно обозначить это, присвоив результат метода [discard](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/functional/discards#a-standalone-discard)\-переменной:

```cpp
_ = PlayMusic();
```

В этом случае предупреждения не будет\.