Я собираюсь отличаться от всех остальных и сказать, что сами GOTO - не все зло. Зло исходит от неправильного использования GOTO.
В целом, почти всегда есть лучшие решения, чем использование GOTO, но действительно есть моменты, когда GOTO - это правильный способ сделать это.
При этом вы - новичок, поэтому вам нельзя позволять судить о том, является ли GOTO правильным или нет (потому что вряд ли когда-нибудь) в течение еще нескольких лет.
Я бы написал ваш код так (мой VB немного ржавый ...):
Dim valid As Boolean = False
While Not valid
Console.WriteLine("Please enter the day you were born: ")
Dim day As String
day = Console.ReadLine
If day > 31 Or day < 1 Then
Console.WriteLine("Please enter a valid day.")
Else
valid = True
End If
End While
Если вы возьмете свой код GOTO и посмотрите на него, как кто-то сначала подойдет к вашему коду? «Хм… повторный день? Что это делает? Когда это происходит? О, так мы переходим на этот ярлык, если день выходит за пределы диапазона. Хорошо, поэтому мы хотим выполнить цикл, пока дата не будет считаться действительной и находящейся в диапазоне» .
Принимая во внимание, что если вы посмотрите на мою:
«О, мы хотим продолжать делать это до тех пор, пока оно не будет действительным. Оно действительно, когда дата находится в пределах диапазона».