# 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
