# 000124. Блочные конструкции. Оператор управдения swith

Блочные конструкции. Оператор управдения swith||wmysterio|wmysterio|<wmysterio@yandex.ru>|/||Всем привет! Мы продолжаем изучать блочные конструкции C#. И на этот раз мы поговорим о switch - управляющем операторе. Суть этой конструкции в том, чтобы выполнять нужный код в зависимости от переданного в него параметров. Сама конструкция выглядит следующим образом:

| <p>switch (Выражение) {<br>      Код1....<br>      Код2....<br>      Код3....<br>      Код4....<br>      КодN....<br>}<br></p> |
| ------------------------------------------------------------------------------------------------------------------------------ |

Что бы конструкция обрабатывала нужный код, нам нужно указать возможный вариант с помощью оператора case:

| <p>case Выражение1:<br>     Код выполения1;<br>     break;<br></p> |
| ------------------------------------------------------------------ |

Оператор break ставить обязательно, что бы код мог продолжаться после выполнения действий в case, то есть выйти с конструкции. Выполнятся код будет тот, если Выражение будет равно Выражение1. Если оно не будет равно, то будет сравнение Выражение следующего case. И так до тех пор, пока не будет выполнено одно из условий. Если ни один вариант не подошел, то, как правило указывают ещё один оператор - default, то есть код, выполняемый по умолчанию:<br>

| <p>default :<br>     Код выполения1;<br>     break;</p> |
| ------------------------------------------------------- |

Вот вам простой пример:

| <p>int CS = 8;<br><br>switch ( CS ) {<br>     case 1:<br>          CS \*= 2;<br>          break;<br>     case 2:<br>          CS /= 2;<br>          break;<br>     case 3:<br>          CS += 2;<br>          break;<br>     case 4:<br>         CS -= 2;<br>          break;<br>     default:<br>          CS = 0;<br>          break;<br>}<br></p> |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Эту конструкцию можно заменить следующим кодом, который для вас будет более понятен:<br>

| <p>int CS = 8;<br>if (CS == 1) {<br>     CS \*= 2;<br>} else if (CS == 2) {<br>     CS /= 2;<br>} else if (CS == 3) {<br>     CS += 2;<br>} else if (CS == 4) {<br>     CS -= 2;<br>} else {<br>     CS = 0;<br>}</p> |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Но есть одно "Но" ![smile](http://s49.ucoz.net/sm/15/smile.gif) В операторе свитч(switch) существует такое понятие как "проваливание". Если Выражение свитча будет равно кейсу(case), но никакого кода не предусмотрено для выполнения, то идёт как бы "проваливание" вниз по кейсам и будет выполнен ближайший код. Приведу вам пример:

| <p>int CS = 2;<br>switch ( CS ) {<br>     case 1:<br>     case 2:<br>     case 3:<br>          CS += 2;<br>          break;<br>     case 4:<br>     default:<br>          CS = 0;<br>          break;<br>}<br></p> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

Как мы видим существует кейс, который равен выражению свитча, но никакого кода для него не предусмотрено, таким образом будет выполнен код следующего кейса, который имеет команды. В нашем случаи это код кейса 3. На выходе наша переменная CS будет равна 2+2 = **4**. Если мы использовали условия(оставив только условие CS == 3), как написано выше, то на выходе мы получили бы 0. Иногда это используют и даже бывает полезным, но всё же это делается крайне редко.\
В Sanny Builder есть аналог этой конструкции - [таблицы переходов](https://github.com/wmysterio/scm-scripting-lessons/blob/main/publ/uroki_skriptinga/gta_sa/tablicy_perekhodov/34-1-0-145/README.md). Главное отличие в том, что в swith мы можем подставлять выражения любого примитивного типа данных.\
Вот мы рассмотрели очередную блочную констукцию. Надеюсь, это поможет вам в разработке как скриптов к GTA 4, так и приложений на c#.|487|1|0||blochnye\_konstrukcii\_upravljajushhij\_operator|1392798779


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lessons.sannybuilder.com/00300/00100/000124.-blochnye-konstrukcii.-operator-upravdeniya-swith.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
