Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зачем Break; в switch? С логической точки зрения 
V
    Опции темы
tol05
Дата 28.6.2007, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 63
Всего: 170



в Ecma-334 они так и называются 
Цитата

case labels of a switch statement ...default label... expression of each case label shall...

и т.д. вообще-то ECMA - главный учебник теперь для меня в части синтаксиса... MSDN отдыхает smile
Код

...
case 0:
CaseZero();
goto case 1;
case 1:
CaseZeroOrOne();
goto default;
...


Exception по-поводу твоих нововведений smile А мне как раз нравится то, что есть. На плюсы очень похоже. И проще гораздо. Читаю плюсовый код, понимаю конструкции интуитивно. а так - напрягаться прийдется, вспоминать... Я поэтому и VB не очень... Напрягает немного smile




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
SpaceSpace
Дата 28.6.2007, 09:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



я так подозреваю, что при swithc(x)
за ним стоят долгие 
if (x=y) goto y'
if (x=z) goto z'...
т.е. физически при swithc
юзается goto!!!
ну блин... не ожидал я такого,
меня еще в школе долбили "goto - плохой стиль, не используй" smile 
....
надо пересматривать свои принцыпы 


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
Дрон
Дата 28.6.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



Кстати, в самом начале же было сказано, что хотя сквозного выполнения нет, но есть вот такая конструкция:
Код
switch(n)
{
    case 1:
    case 2:
    case 3:
        doSomething();
        break;
}

В которой отсутствие break; в первых двух случаях вполне осмысленно.
С другой стороны, присоединяюсь к тем, кого этот break; бесит. Я бы предпочёл вот такой синтаксис:
Код
switch(n)
{
    case 1,2,3:
        doSomething();
}



--------------------
Да. Именно так.
PM   Вверх
SpaceSpace
Дата 28.6.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 2
Всего: 10



Цитата(Дрон @  28.6.2007,  09:29 Найти цитируемый пост)
Я бы предпочёл вот такой синтаксис:


Код

switch(n)
{
    case 1,2,3:
        doSomething();
}


ага.. в дельфе мне нравилось

case 0..9 , что означало попадение в область от 0 до 9....

Это сообщение отредактировал(а) SpaceSpace - 28.6.2007, 09:37


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
Kvazilol
Дата 28.6.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



блин а после case нельзя написать метод, надо именно константы писать!! объяните какого х! какая ему разница блин, пусть все вычисляет и сам подставляет, мне не жалко
PM MAIL   Вверх
Exception
Дата 28.6.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



SpaceSpace, даже банальный if на уровне IL сводится к нескольким goto. Плохой стиль -- применять его самому, а что уж там компилятор сделает из твоего кода, это его дело.
Кстати, хотя синтаксис VB .NET мне не очень нравится, оператор Select Case там мощнее:
Код
Select Case someVariable
    Case 1
        foo ()
    Case 2
        bar ()
    Case 3, 4
        foobar ()
    Case Is >= 5
        barfoo ()
    Case getSomeInteger ()
        doSomeStuff ()
    Case Else
        haha ()
End Select

PM   Вверх
Дрон
Дата 28.6.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 24
Всего: 92



Цитата(Kvazilol @  28.6.2007,  11:57 Найти цитируемый пост)
блин а после case нельзя написать метод, надо именно константы писать!! объяните какого х! какая ему разница блин, пусть все вычисляет и сам подставляет, мне не жалко 

Используй if. А разница как раз в том, что компилятор оптимизирует работу switch..case перераспределяя порядок проверки условий и поэтому ему нужны константы, известные во время компиляции.


--------------------
Да. Именно так.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.