Условные конструкции

Последнее обновление: 30.10.2015

В VB.NET имеются следующие условные структуры:

  • If ... Then

  • Select Case

Конструкция If...Then

Конструкция If ... Then проверяет истинность некоторого условия и зависимости от результатов проверки выполняет определенный код:

Dim num1 As Integer = 10
Dim num2 As Integer = 9
If (num1 > num2) Then
    Console.WriteLine("Число {0} больше числа {1}", num1, num2)
End If

Здесь проверяем, больше ли число num1 числа num2, и если num1 больше чем num2. то выводим сообщение. Но, допустим, мы захотим, чтобы в случае невыполнения этого условия тоже совершалось какое-нибудь действие. Тогда мы добавляем выражение Else и после него определяем те действия, которые будут совершаться, если программа не удовлетворяет условию в выражении If. Например, мы будем выводить сообщение, что первое число меньше второго:

Dim num1 As Integer = 10
Dim num2 As Integer = 9
If (num1 > num2) Then
    Console.WriteLine("Число {0} больше числа {1}", num1, num2)
Else
	Console.WriteLine("Число {0} меньше числа {1}", num1, num2)
End If

Но как вы уже заметили, мы сделали немного неправильно. Так как первое число может быть не только больше или меньше второго: оба числа могут быть равны друг другу. В этом случае мы можем определить альтернативные условия с помощью ключевого слова ElseIf:

Dim num1 As Integer = 10
Dim num2 As Integer = 9
If (num1 > num2) Then
    Console.WriteLine("Число num1 больше числа num2")
ElseIf num1 < num2 Then
    Console.WriteLine("Число num1 меньше числа num2")
Else
    Console.WriteLine("Число num1 равно числу num2")
End If

или так:

Dim R As New Random()
Dim num1 As Integer = R.Next(100)
If num1 = 1 Then
    Console.WriteLine("Число num1 равно 1")
ElseIf num1 = 2 Then
    Console.WriteLine("Число num1 равно 2")
ElseIf num1 = 3 Then
    Console.WriteLine("Число num1 равно 3")
Else
    Console.WriteLine("Число num1 больше 3")
End If

В данном примере мы использовали генератор случайных чисел, который представлен классом Random. Строка Dim R As New Random() выполняет инициализацию генератора случайных чисел. А в следующей строке Dim num1 As Integer = R.Next(100) мы присваиваем числу num1 случайное значение, которое выдаст нам генератор, причем в качестве максимально возможного значения выбрано число 100.

Конструкция Select Case

Конструкция Select Case подобна в конструкции If...Then, так как позволяет обрабатывать сразу несколько условий. После слов Select Case указывается сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора Case. И в случае если значения совпали, то выполняется блок команд, помещенных после данного оператора Case. Конструкция завершается словами End Select. Если мы хотим определить действия, которые будут выполняться, если совпадений не выявлено, то мы можем использовать оператор Case Else, после которого помещаем блок действий по умолчанию. Блок Case Else необязателен и может не употребляться Так, мы можем переписать предыдущий пример с помощью Select Case:

Dim R As New Random()
Dim num1 As Integer = R.Next(100)
Select Case num1
	Case 1
		Console.WriteLine("Число num1 равно 1")
    Case 2
        Console.WriteLine("Число num1 равно 2")
    Case 3 To 25
        Console.WriteLine("Число num1 находится на отрезке от 3 до 25")
    Case Else
        Console.WriteLine("Число num1 больше 25")
End Select

Здесь мы также генерируем случайное число и последовательно сравниваем его значения. Обратите внимание на строку Case 3 To 25 - здесь мы задаем целый диапазон значений от 3 до 25. Также обратите внимание, что если будет найдено совпадение с одним из выражений Case, то остальные выражения Case рассматриваться не будут. То есть следующий код отработает только для выражения Case 1, после чего программа осуществит выход из Select Case, несмотря на то, что новое значение числа совпадает с значением в следующем выражении Case:

Dim num2 As Integer = 1
Select Case num2
	Case 1
		Console.WriteLine("Число num2 равно 1")
		num2 += 1
    Case 2
        Console.WriteLine("Число num2 равно 2")
		num2 += 1
    Case 3 To 25
        Console.WriteLine("Число num2 равно 3")
End Select

Конструкция GoTo

Ну и в конце говоря об условных конструкций нельзя не упомянуть и оператор GoTo. Этот оператор требует после себя указание метки, на которую осуществляется переход. Например:

		Dim time As String = "day"
		If time = "day" Then
			GoTo M1
		Else
			GoTo M2
        End If
M1:     Console.WriteLine("Hello World")
M2:     Console.WriteLine("Good Bye World")

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

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850