Vb.net 异或替代品

Vb.net 异或替代品,vb.net,Vb.net,我得到了以下方法: Private Sub boldButton_Click(sender As System.Object, e As System.EventArgs) Handles boldButton.Click Dim curFont As Font Dim newFont As Font curFont = rtb.SelectionFont If curFont IsNot Nothing Then 'create the new

我得到了以下方法:

Private Sub boldButton_Click(sender As System.Object, e As System.EventArgs) Handles boldButton.Click
    Dim curFont As Font
    Dim newFont As Font
    curFont = rtb.SelectionFont
    If curFont IsNot Nothing Then
        'create the new font
        newFont = New Font(curFont.FontFamily, curFont.Size, curFont.Style Xor FontStyle.Bold)
        'set it
        rtb.SelectionFont = newFont
    End If
End Sub
当前在理解这部分代码时遇到问题
curFont.Style Xor FontStyle.Bold
。不使用
运算符
Xor
实现相同结果的有效方法是什么

编辑(如us2012评论)我需要替代方案吗


我已经查过了,但在
boldButton\u Click
过程中仍然难以理解它的实现。

从您的评论判断,您不理解
Xor
在这里的作用,我认为一个解释将比人工的替代构造更能帮助您。如果你想了解它是如何工作的,你首先需要知道,一旦你知道了,想象一下,对于一种字体,字体样式被保存为0和1。为了简单起见,假设有3位,第一位表示粗体,第二位表示斜体,第三位表示下划线。(因此101带粗体下划线,011带斜体下划线,等等。此外,
FontStyle.bold
是100等)

然后,与按位操作类似:

oldstyle或FontStyle.Bold
创建一个加粗的新样式,无论旧样式是否为。(如果
oldstyle
FontStyle.Italic
=
010
,则
010或100
=
110
,因此新样式为粗体斜体。)


oldstyle Xor FontStyle.Bold
创建一个新样式,如果旧样式不是粗体,则为粗体;如果旧样式是粗体,则为不粗体。(假设
oldstyle
是粗体和斜体,所以
110
,那么
110 Xor 100
就是
010
,只有斜体。但是,如果旧样式是正常的
000
,那么
000 Xor 100
就是
100
,所以只需粗体即可。)

按位异或切换标志。让我们假设样式位字段如下所示

00000000
     ^^^
     BIU (Bold, Italic, Underline)
因此
FontStyle.Bold
的值为:

00000100
现在
something Xor FontStyle.Bold将在
something
中翻转此位。例如:

00000111 Xor 00000100 = 00000011    (Boldness removed)
00000001 Xor 00000100 = 00000101    (Boldness added)
请注意,其他位不受影响



由于您明确要求提供替代方案:您可以检查位是否设置为
样式和粗体0
,然后将其设置为
样式=样式或粗体
,或者将其删除
样式=样式和(不粗体)

如果此方法有效,为什么需要不同的方法?@us2012-因为我不理解它。。。另一种选择希望能对我有所帮助understand@us2012-我想我会编辑这个问题。+1谢谢你的选择-尽管@us2012猜测我需要先读一点关于位操作的内容(请原谅双关语)OK+1-我会在做任何其他事情之前阅读位引用!