Visual Basic の if 文は歴史を覆すことができる…訳はない

技術メルマガネタ

青木「歴史に if は無いというが、Visual Basic には if があるッ!!!」
田中「まぁ、そりゃそうでしょうね。if 文がないと条件分岐ができないし…」
青木「しかし、if が無ければ、前だけ向いて進めばいいという先生の話も理解できるし」
田中「いや、それ、ラジオの CM ですし…」
青木「しかし、if が無ければ、管直人の支持率もアップアップだったわけだし」
田中「if というか、それ現実ですし…というか、アップアップって…」
青木「しかし、if が無ければ、小学校の思い出が、今現実のものとなり、今ここで発現されたチェレンコフ光が」
田中「if というか、訳わからないし…しかも、最後が微妙に危ないし…」
青木「まぁ、あれだよな。if とか select とか無いほうが、物事一直線で安全だよな」
田中「いや、猪突猛進管内閣自暴自棄暴走茫漠ということで」

これも却下ネタ。
技術メルマガでは、政治ネタはオミット。

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim i1 As Integer = 0
        Dim i2 As Integer = 2

        ' 単純な = 演算子
        If i1 = 0 Then

        End If
        ' 否定のための <> 演算子
        If i1 <> 0 Then

        End If
        ' 比較演算子
        If i1 < 0 Then

        End If
        ' Else も使うよ
        If i1 = 0 Then
            ' マッチする場合
        Else
            ' マッチしない場合
        End If
        ' ElseIf も使うよ
        If i1 = 0 Then
            ' 最初の条件にマッチする場合
        ElseIf i1 = 1 Then
            ' 2番目の条件にマッチする場合
        Else
            ' それ以外
        End If

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        ' 2 つの条件を指定する
        Dim s1 As String = "tonny"
        Dim s2 As String = "masuda"

        ' 両方の条件を一度に満たす
        If s1 = "tonny" And s2 = "masuda" Then

        End If
        If s1 = "tonny" AndAlso s2 = "masuda" Then

        End If
        ' どちらか一方の条件を満たす
        If s1 = "tonny" Or s2 = "masuda" Then

        End If
        If s1 = "tonny" OrElse s2 = "masuda" Then

        End If

        ' ベン図を使う
        If s1 <> "tonny" Or s2 <> "masuda" Then

        End If
        ' 複雑なので not を使う
        If Not (s1 = "tonny" And s2 = "masuda") Then

        End If
        ' 条件が多くて分かりづらい場合は、if 文を重ねると良い
        If s1 <> "tonny" Then
            If s2 <> "masuda" Then

            End If
        End If

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim s1 As String = "tonny"
        Select Case s1
            Case "tonny"
                ' tonny の場合
            Case "masuda"
                ' masuda の場合
            Case Else
                ' 上記以外
        End Select

        ' 実は if else と同じ
        If s1 = "tonny" Then
            ' tonny の場合
        ElseIf s1 = "masuda" Then
            ' masuda の場合
        Else
            ' 上記以外
        End If

        ' : を使って短く書ける
        Dim s2 As String = ""
        Select Case s1
            Case "tonny" : s2 = "トニー"
            Case "masuda" : s2 = "増田"
            Case Else : s2 = "トニー 増田"
        End Select

        ' 関数を使ってシンプルに
        Dim s3 As String = Check(s1)

        ' 文字列の場合は、Dictonary を使う方法もある
        ' あらかじめ設定しておく
        Dim dic As New Dictionary(Of String, String)
        dic.Add("tonny", "トニー")
        dic.Add("masuda", "増田")
        ' 辞書から検索
        If dic.ContainsKey(s1) = True Then
            s3 = dic(s1)
        Else
            s3 = "トニー 増田"
        End If

    End Sub

    ''' <summary>
    ''' SELECT 内で Return を使う
    ''' </summary>
    ''' <param name="str"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function Check(ByVal str As String)
        Select Case str
            Case "tonny" : Return "トニー"
            Case "masuda" : Return "増田"
            Case Else : Return "トニー 増田"
        End Select
    End Function

End Class
カテゴリー: VB, 技術メルマガ パーマリンク

Visual Basic の if 文は歴史を覆すことができる…訳はない への1件のコメント

  1. masuda のコメント:

    「…訳はない」というか「…ハズはない」というタイトルがよいなぁ。
    「…わけではない」とか。

    最初は、歴史ものの if シリーズを意識するはずだったのだが、会話が途中でずれてしまった。なので、黒字率を高めてごまかす、という定番。

コメントは停止中です。