Побітовий оператор «XOR»
Дещо змінимо попередню програму в частині обробки події CheckedChanged (Зміна стану прапорця). Замість двох умов if напишемо один оператор:
Label1.Font = New Font("Courier New", 14.0F, Label1.Font.Style Xor FontStyle.Bold)
Тут кожен раз при зміні стану прапорця значення параметру Label1.Font.Style порівнюється з одним і тим самим значенням FontStyle.Bold. Оскільки між ними стоїть побітовий оператор Xor (оператор виключення АБО), він буде призначати Bold, якщо поточне значення Label1.Font.Style "не Bold". А якщо Label1.Font.Style перебуває в стані "Bold", то оператор Xor буде призначати значення "не Bold". Цей оператор ще називають логічним XOR.
Таблиця істинності логічного XOR має вигляд:
A | B | A Xor B |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
В даному випадку в нас завжди B = 1 (FontStyle.Bold), а A (Label1.Font.Style) змінює значення то Bold, то Regular (тобто "не Bold"). Таким чином, оператор Xor завжди буде призначати протилежне значення тому, яке записане в Label1.Font.Style.
Як видно використання побітового оператора призвело до значного зменшення кількості програмного коду.