﻿# V3202\. Unreachable code detected\. The 'case' value is out of the range of the match expression\.

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

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

```cpp
switch (random.Next(0, 3))
{
  case 0:
  case 1:
    Console.WriteLine("1");
    break;
  case 2:
    Console.WriteLine("2");
    break;
  case 3:                     // <=
    Console.WriteLine("3");
    break;
  default:
    break;
}
```

В данном случае код в 'case 3' никогда не выполнится\. Дело в том, что в 'random\.Next\(0, 3\)' верхняя граница не входит в возвращаемый диапазон значений\. В результате выражение в 'switch' никогда не примет значение 3, и 'case 3' не выполнится\.

Исправить эту ошибку можно двумя способами\. В первом варианте можно просто избавиться от мертвого кода, удалив секцию 'case 3', которая не входит в диапазон 'random\.Next\(0, 3\)':

```cpp
switch (random.Next(0, 3))
{
  case 0:
  case 1:
    Console.WriteLine("1");
    break;

  case 2:
    Console.WriteLine("2");
    break;
}
```

Либо же можно увеличить верхнюю границу в методе 'next' \- 'random\.Next\(0, 4\)':

```cpp
switch (random.Next(0, 4))
{
  case 0:
  case 1:
    Console.WriteLine("1");
    break;

  case 2:
    Console.WriteLine("2");
    break;

  case 3:                    
    Console.WriteLine("3");
    break;
}
```