6 Vb.Net instrukcja Select...Case zamiast If

Instrukcja Select...Case zamiast If

Instrukcja If może być z powodzeniem zastąpiona przez instrukcję Select Case.  Select Case ma dużo krótszy zapis. Żeby to udowodnić napiszemy kod z instrukcją If a nastepnie napiszemy kod, który wykonuje to samo tylko, że ma krótszy i czytelniejszy zapis. No to do dzieła :) W procedurze użycia przycisku formy wstawmy sobie kod:
  Dim wiek As Byte
        wiek = InputBox("Ile masz lat", "Pytanie")
        If wiek <= 0 Then
            MessageBox.Show("To nie jest możliwe", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        ElseIf wiek < 16 Then
            MessageBox.Show("To jeszcze mentalnie dzieci", "Nieźle", MessageBoxButtons.OK, MessageBoxIcon.Information)
        ElseIf wiek < 18 Then
            MessageBox.Show("Uważają się za dorosłych a wyglądają jak dzieci", "Prawda?", MessageBoxButtons.OK, MessageBoxIcon.Information)
        ElseIf wiek < 40 Then
            MessageBox.Show("W kwiecie wieku :)", "Cudowny czas", MessageBoxButtons.OK, MessageBoxIcon.Information)
        ElseIf wiek <= 100 Then
            MessageBox.Show("Poczciwy wiek", "Złote lata", MessageBoxButtons.OK, MessageBoxIcon.Information)
        ElseIf wiek < 110 Then
            MessageBox.Show("Białe kruki", "Niesamowite", MessageBoxButtons.OK, MessageBoxIcon.Information)
        ElseIf wiek = "" Then
        Else
            MessageBox.Show("To niemożliwe", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End If

Jak widać kod do najbardziej przejrzystych nie należy a dodatkowo instrukcje If nie pozwalają nam w prosty sposób operować na przedziałach. Instrukcja Select Case nam na to pozwala. Spróbujmy teraz napisać to samo w instrukcji Select Case
Dim wiek As Byte
        wiek = InputBox("Ile masz lat", "Pytanie")
        Select Case wiek
            Case Is < 0
                MessageBox.Show("To nie jest możliwe", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Case 0 To 15
                MessageBox.Show("To jeszcze mentalnie dzieci", "Nieźle", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 16 To 18
                MessageBox.Show("Uważają się za dorosłych a wyglądają jak dzieci", "Prawda?", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 19 To 39
                MessageBox.Show("W kwiecie wieku :)", "Cudowny czas", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 40 To 100
                MessageBox.Show("Poczciwy wiek", "Złote lata", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case 100 To 110
                MessageBox.Show("Białe kruki", "Niesamowite", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Case Is > 110
                MessageBox.Show("To niemożliwe", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End Select

Jak widać poprawiła się czytelność i ubyło kilka zbędnych znaków z kodu. Często instrukcja Select Case działa dużo szybciej niż If dlatego, że nie musi sprawdzać wyrażenia testowanego dla każdej instrukcji Case. Inaczej działa instrukcja If, która sprawdza wyrażenia testowane dla każdej instrukcji If oraz ElseIf. Wspomnieć jeszcze muszę o słowach kluczowych To oraz Is, pojawiających się w instrukcjach Select Case. 
Słowo kluczowe To określa przedział wartości, do którego pasować powinna wartość wyrażenia testowanego. 
Słowo kluczowe Is pozwala na wykonywanie porównania logicznego przy użyciu wartości testowanej. 
Wartości testowane, to są te wartości  które pojawiają się za instrukcją Select Case. W naszym przypadku jest to zmienna "wiek"
End Select to zakończenie działania instrukcji.

To było by na tyle w tej części poradnika.

 
Utworzono 07.09.2015r

Brak komentarzy:

Prześlij komentarz