Разное

Select vb net case: Оператор Select…Case — Visual Basic

Оператор Select … Case

VBAимеет условный оператор перехода для использования в случаях, когда необходимо выбирать из большого количества различных ветвей кода: операторSelect Case(с его помощью очень удобно реализовывать структуру множественного выбора). Он работает во многом так же, как множе­ство независимых операторовIf, но он более понятен для того, кто пишет код, и того, кто читает этот код. Этот оператор более эффективен, чем операторIfThenElse.

Ключевые слова Select Case используются со мно­гими операторамиCase, где каждый операторCase проверяет появление дру­гого условия и выполняется только одна из ветвейCase. ВетвьCase может со­держать один, несколько или ни одного оператораVBA.

Select Case – управляющий оператор, выполняющий один из нескольких блоков операторов в зависимости от значения выражения.

Select Case Выражение_выбора

[ Case Список_выражений_1

[Блок_операторов_1]

[Case Список_выражений_2 ]

[Блок_операторов_2]]

……………………………………………………………………………

[Case Else

[Блок_операторов_N]]

End Select

– Выражение_выбора – любое числовое или символьное выражение;

– Список_выражений – каждый из списков представляет собой список логических выражений, отделенных запятыми; имеют тот же тип, что и выражение_выбора;

– Блок_операторов – содержит любое количество операторов VBA.

При выполнении оператора Select Case VBA сначала оценивает Выражение_выбора, а затем сравнивает результат этого выражения с каждым выраже­нием, перечисленным в каждом Списке_выражений. Если значение, представлен­ное с помощью Выражение_выбора совпадает с выражением в Списке_выражений

для одного из Case, VBA выполняет Блок_операторов для этого предложения Case. Если значение Выражение_выбора совпадает более, чем с одним оператором Case, VBA выполняет только операторы в первом совпадающем предложении Case. Часто Выражение_выбора – это просто имя одной переменной, математическое или чис­ленное, а не логическое выражение. Выражения в Списке_выражений – это обыч­но логические выражения.

После завершения выполнения операторов в первом совпадающем опера­торе Case VBA продолжает выполнение кода с первого оператора после ключе­вых слов End Select, которые обозначают конец Select Case.

Если значение Выражение_выбора не совпадает ни с каким из Case, а необяза­тельный Case

Else присутствует, VBA выполняет операторы, представленные с помощью Блок_операторов_N перед переходом к оператору после Select Case. Блок операторов Case Else выполняется только в том случае, если Выражения_выбора не удовлетворяет ни одному из условий Case. Обычно используется для обработки нежелательных значений. Действие оператора Select Case поясняется блок-схемой, приведенной на рис. 5.

Рис 5. Блок-схема конструкции Select Case

Элементы Списка _ выражений должны иметь одну из следующих трех форм:

Выражение_1,Выражение_2, …, Выражение_N

Выражение Тo Выражение

Is Выражение с операцией

– Выражение_ – любое числовое, символьное или логическое выражение того же типа, что и выражение выбора;

– Выражение с операцией – выражение, содержащее любую из следующих операций: <, <=, >, >=, < >, =.

Если используется ключевое слово Тo для определения пределов выражения, то меньшее значение должно быть первым. Например, операторы блока Case -1 To -5 не выполняются, если Выражение _ выбора равно -4. Эта строка должна быть написана как Case -5 To -1.

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

Можно использовать несколько выражений или пределов в каждом условии Case. Например, Case 1 TO 4, 7 TO 9, 11, 13, Is > n %.

Пример 4. Программа, рассчитывающая скидку в зависимости от суммы покупки.

Sub skidka()

‘ Определение скидки (в %) в зависимости от

‘ количества продаваемого товара

Dim skidka As Integer

Dim summa As Single

summa = InputBox(«Введите сумму покупки», «Расчет скидки», 0)

If summa > 0 Then

Select Case summa

Case Is > 1000

skidka = 10

Case Is > 500

skidka = 5

Case Else

skidka = 0

End Select

MsgBox «Скидка» & skidka & «%»

Else

MsgBox «Сумма покупки не указана»

End If

End Sub

VB.

NET Select… Оператор Case эквивалентен в C#

спросил

Изменено 4 года, 11 месяцев назад

Просмотрено 34к раз

Я только начал использовать C#, и у меня есть пара проблем. Есть ли способ закодировать C#-эквивалент оператора VB.NET Select, как показано ниже?

 Выбрать Object.Name.ToString()
    Дело "Имя1"
        'Сделай что-нибудь
    Кейс "Имя2"
        'Сделай что-нибудь еще
    Дело еще
        'Выполнить действие по умолчанию
Конец выбора
 

Любая помощь будет принята с благодарностью.


Спасибо за ввод, а теперь что, если я привяжу несколько элементов управления к одному обработчику событий, как показано ниже, и захочу выполнить немного другое действие для каждого элемента управления:

 Private Sub Button_Click(sender as Object, e as EventArgs) _
  Обрабатывает button1. Click, Button2.Click
    'заниматься общей деятельностью
    Выберите CType (отправитель, кнопка). Имя
        Кейс button1.Name
            'сделай что-нибудь
        Кейс button2.Name
            сделать что-нибудь еще
        Дело еще
            'выполнить действие по умолчанию
    Конец выбора
Конец сабвуфера
 

Есть ли какой-нибудь способ сделать приведенный выше оператор выбора в C# без использования вложенных операторов if?

  • c#
  • vb.net
  • vb.net-to-c#

1

Со временем я обнаружил, что некоторые конструкции VB.NET Select...Case неприменимы в C#, и единственный выход — написать много операторов if.

Например, в VB.NET вы можете написать:

 Dim num as Integer = 5
Выберите номер дела
    Случай с 1 по 10
        'сделай что-нибудь
    Случай с 11 по 20
        сделать еще одну вещь
    Дело еще
        'сделать по умолчанию
Конец выбора
 

Но в C# нет конструкции switch , позволяющей делать что-то подобное. Вам придется кодировать в кольцевой развязке так:

 int num = 5;
переключатель (число)
{
    Дело 1:
    случай 2:
    случай 3:
    случай 4:
    случай 5:
    случай 6:
    случай 7:
    случай 8:
    случай 9:
    случай 10:
        //сделай что-нибудь
        перерыв;
    случай 11:
    случай 12:
    случай 13:
    случай 14:
    случай 15:
    случай 16:
    случай 17:
    случай 18:
    случай 19:
    случай 20:
        // сделать что-то еще
        перерыв;
    по умолчанию:
        // делаем по умолчанию
        перерыв;
}
 

Или, если вы работаете с Double или любым типом, состоящим из непрерывных, а не дискретных значений, вам придется использовать , если s, чтобы получить требуемое действие.

Причина? Переключатель C# требует констант для различных case s. Это отличается от VB.NET Select Case , который позволяет записывать диапазоны.

2

Вам нужен оператор switch. ..

 переключатель (Object.Name.ToString())
{
   случай "Имя1":
     //Сделай что-нибудь
     перерыв;
   по умолчанию:
     //по умолчанию
     перерыв;
}
 

Обратите внимание, что перерывы являются импортными, иначе программа пропустит ваши дела. Вы сможете найти это практически в любом введении в C#...

2

Используйте оператор switch .

 переключатель (object.Name.ToString()) {
  случай "Имя1":
    перерыв;
    //Сделай что-нибудь
  случай "Имя2":
    перерыв;
    // Делаем что-то еще
  по умолчанию:
    перерыв;
   // Делаем действие по умолчанию
}
 

И не забывайте, что существует бесплатный онлайн-инструмент преобразования, который позволяет конвертировать VB.net в C# и наоборот.

В C# 7 переключатель был значительно улучшен , и теперь можно применять больше условий в случаях, хотя он все еще не такой «чистый», как версия VB. Например.

вы можете сделать что-то вроде:

 переключатель (examScore)
{
  case int es когда es >= 90: класс = "A"; перерыв;
  case int es когда es >= 80: класс = "B"; перерыв;
  case int es когда es >= 70: класс = "C"; перерыв;
  case int es когда es >= 60; класс = "Д"; перерыв;
  по умолчанию: класс = "F"; перерыв;
}
 

Взято из / Ссылки:

  • Переключатели C# против VB Case Statements
  • https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/switch

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Оператор switch

— выбор регистра для типа объекта в VB.

NET

спросил

Изменено 10 лет, 3 месяца назад

Просмотрено 65 тысяч раз

Я не уверен, что это правильный C#, но, надеюсь, вы поняли идею. 🙂

 переключатель (msg.GetType()) {
    корпус Класс А:
        // бла
    корпус класса B:
        // бла 2
    корпус Класс C:
        // бла 3
}
 

Как включить тип объекта, но с помощью VB.NET Select Case ?

Я знаю, что некоторые могут предложить использовать полиморфизм, но я использую иерархию небольших классов сообщений, так что в моем случае это не сработает.

  • vb.net
  • оператор switch
  • select-case

В VB 2010 для проектов, предназначенных для .NET framework 4 и более поздних версий, теперь можно сделать следующее:

 Select Case msg. GetType()
    Дело GetType(ClassA)
Конец выбора
 

В более ранних версиях VB это не работало, потому что нельзя было сравнивать два типа на равенство. Вам нужно будет проверить, указывают ли они на одну и ту же ссылку, используя ключевое слово Is. Это невозможно сделать в Select Case, если только вы не используете свойство типа Name или FullName для сравнения, как предложил Майкл. Вы можете использовать комбинацию If и ElseIf:

 Dim type = msg.GetType()
Если тип GetType (ClassA)
    ...
Тип ElseIf GetType (ClassB)
    ...
...
Конец, если
 

4

Ну, если вы настаиваете на использовании Select Case, вы всегда можете использовать:

 Select Case True
    Case TypeOf msg Is ClassA
        ' сделай что-нибудь '
    Case TypeOf msg Is ClassB
        'сделай что-нибудь еще'
    Дело еще
        ' и так далее '
Конец выбора
 

Но я полагаю, что большинству людей нравится избегать подобных вещей. If/ElseIf, вероятно, будет понятнее.

4

Это способ обработки событий щелчка Button1 и Button2 в одном и том же подразделе (я начинал как программист VB6, так что это хорошая замена VB6 для обработки управляющих массивов)

 Private Sub Button1_Click(ByVal sender As System. Объект, _
ByVal e As System.EventArgs) Обрабатывает Button1.Click, Button2.Click
                Выберите «Регистр верно»
                    Отправителем обращения является Me.Button1
                        'Делай Button1'
                    Отправителем дела является Me.Button2
                        'Делай Button2'
                Конец выбора
            Конец сабвуфера
 

0

Я бы никогда не стал выбирать case true , но вы можете сделать это:

 Select Case msg.GetType.Name
 Случай GetType(ClassA).Name
 ...
 Случай GetType(ClassB).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *