熟練PGでも意外に知らない/気づいていない人が多い、ビット演算子 Xor の活用法。
Xorを使えば、Boolean型(C#やJAVAだとbool型)を1行で反転させることが出来る。
Dim blnA=True
blnA=blnA Xor True
この場合、blnAはFalseになる。
XORの「両方とも0の場合にのみ1になる」という性質を利用している。XOR演算子の詳細な解説については、他の専門サイトに譲ろう。
具体的な活用法としては、例えばこんなのがある。
Windows Formでのラジオボタンの切り替え(VB2005):
ByVal e As System.EventArgs) Handles rdo七瀬.CheckedChanged
Me.rdo風子.Checked = Me.rdo七瀬.Checked Xor True
End Sub
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の活”法
nice..
こんな書き方でもビット反転できるようです。
blnA=not blnA
試したのは Excel2003 VBA ですが。