VBメモ:XORの活用法


 熟練PGでも意外に知らない/気づいていない人が多い、ビット演算子 Xor の活用法。
 Xorを使えば、Boolean型(C#やJAVAだとbool型)を1行で反転させることが出来る。
Dim blnA=True

blnA=blnA Xor True
 この場合、blnAはFalseになる。
XORの「両方とも0の場合にのみ1になる」という性質を利用している。XOR演算子の詳細な解説については、他の専門サイトに譲ろう。
 
 具体的な活用法としては、例えばこんなのがある。
Windows Formでのラジオボタンの切り替え(VB2005):

Public Class Form1

     Private Sub rdo七瀬_CheckedChanged(ByVal sender As System.Object,  _
                                    ByVal
e As System.EventArgs) Handles rdo
七瀬.CheckedChanged

        Me.rdo風子.Checked = Me.rdo七瀬.Checked Xor True

    End Sub

     Private Sub rdo風子_CheckedChanged(ByVal sender As System.Object,  _
                                     ByVal
e As System.EventArgs) Handles rdo
風子.CheckedChanged

        Me.rdo七瀬.Checked = Me.rdo風子.Checked Xor True

    End Sub

End Class

実行結果

↓クリックすると切り替わる。

 このように、IF文を使わなくても、チェックの切り替えが出来る。ラジオボタン2個だと大したこと無いが、チェックボックスの10個20個一斉切り替えとかなってくると、結構ありがたみがわかるだろう。
 無論、C#やJAVAでも同じ要領でコードを書くことが出来る。
 VBで業務アプリをやっていると、ビット演算なんて滅多に使うことはない。これは数少ない活用法といえるだろう。
-----


VBメモ:XORの活用法」への2件のフィードバック

コメントを残す