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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Switch ... case, Выбор из диапазона 
V
    Опции темы
Lexicss
Дата 27.8.2009, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

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



Оператор Switch .. case

Может ли этот оператор выполняться на условии диапазона значений например Switch(x) ... case 12 .. case 15? (т.е. выполнить при условии если x=12 или 13, или 14, или 15)
В MSDN написано что вроде как не поддерживает неявное "проваливание". 
Но если всё-таки надо, кто как выкручивается? Можно делить на интервал, но это подходит если интервал одинаковый.
Какие ещё есть методы?
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
azesmcar
Дата 27.8.2009, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Вообще-то это делается так
Код

int i = 3;
switch (i)
{
    case 1:
    case 2:
    case 3:
    case 4:
        Console.WriteLine("Hello");
        break;
    case 5:
    case 6:
    case 7:
    case 8:
        Console.WriteLine("Bye");
        break;
}

но я не думаю что на таких больших интервалах имеет смысл применять switch.
PM   Вверх
Akina
Дата 27.8.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



язычок назовём? потому как в Jscript фортель, который показал azesmcar, не пройдёт...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
azesmcar
Дата 27.8.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(Akina @  27.8.2009,  12:27 Найти цитируемый пост)
язычок назовём? потому как в Jscript фортель, который показал azesmcar, не пройдёт... 

Пора бы раздел создать для C#, я этот раздел как C# воспринимаю smile 

Это сообщение отредактировал(а) azesmcar - 27.8.2009, 12:30
PM   Вверх
ДобренькийПапаша
Дата 27.8.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

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



В C# можно также, насколько я помню.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
azesmcar
Дата 27.8.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


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

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



Цитата(ДобренькийПапаша @  27.8.2009,  14:25 Найти цитируемый пост)
В C# можно также, насколько я помню. 

Так я же для C# писал
PM   Вверх
Lexicss
Дата 27.8.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

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



azesmcar, по поводу перечисления понятно. А если у меня диапазон от 101 до 200. Неразумно все 100 case перечислять. 
Так какие ещё варианты, заменить все case на if что ли? :(

Это сообщение отредактировал(а) Lexicss - 27.8.2009, 16:35
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
Rohoss
Дата 27.8.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

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



Цитата(Lexicss @  27.8.2009,  16:35 Найти цитируемый пост)
Неразумно все 100 case перечислять. 

Так не перечесляйте  smile 
Код

            int i = 3;
            switch (i)
            {
                case 101:
                    Console.WriteLine("Hello");
                    break;
                case 200:
                    Console.WriteLine("Bye");
                    break;
            }


Код

            int x = 150;
            bool b = ((x > 100) && (x < 201));
            switch (b)
            {
                case true:
                    Console.WriteLine("true");
                    break;
                case true:
                    Console.WriteLine("false");
                    break;
            }



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
neiron
Дата 28.8.2009, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Комбинируйте switch с if. Как то:

Код

if (i<10)
    switch (i)
    {
        case 0: case1: case6:
            DoSomething();
            break;
        case3:
            DoAny();
            break;
        default:
            DoFoo();
            break;
    }
else if (i < 100)
    DoBar();


Правда, часто такие конструкции запутывают очень сильно, но иногда наоборот код более читаемым делают.

PM MAIL   Вверх
nikitao
Дата 28.8.2009, 10:47 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Lexicss,  в C# нет поддержки диапазонов. В описанной вами задаче лучше всего последовотельно рассматривать необходимые диапазоны через if ы. И не смешивайте вместе if и switch - это отрицательно сказывается на читабельности кода.


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Lexicss
Дата 31.8.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 16.8.2006
Где: Беларусь, Минск

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



Короче в C# этого нету, вместо switch остаётся только использовать if. Спасибо всем ктоучавствовал в обсуждении.
--------------------
Бери от жизни всё.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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