private void buttonBold_Click(object sender, EventArgs e)
{
Font oldFont;
Font newFont;
oldFont = this.richTextBoxText.SelectionFont; if (oldFont.Bold)
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
else
newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold); this.richTextBoxText.SelectionFont = newFont;
this.richTextBoxText.Focus();
}
代码如上;实现增加黑体字,但是在~FontStyle在前面加个“~”有什么意图呢?请教一下这低级问题,谢谢。
{
Font oldFont;
Font newFont;
oldFont = this.richTextBoxText.SelectionFont; if (oldFont.Bold)
newFont = new Font(oldFont, oldFont.Style & ~FontStyle.Bold);
else
newFont = new Font(oldFont, oldFont.Style | FontStyle.Bold); this.richTextBoxText.SelectionFont = newFont;
this.richTextBoxText.Focus();
}
代码如上;实现增加黑体字,但是在~FontStyle在前面加个“~”有什么意图呢?请教一下这低级问题,谢谢。
~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位
& 运算符既可作为一元运算符也可作为二元运算符。一元 & 运算符返回操作数的地址
为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。 & 运算符计算两个运算符,与第一个操作数的值无关。
假设字体有属性是否粗体,是否斜体,是否下划线3个
分别以二进制位中的第3,1,1位表示
0111就是三个属性都为真,0000都是假代表粗体为真的数字就是0100,也就是4
代表斜体 就是 0010 ,2
代表下划线 就是 0001, 1
所以想设置同时粗体并且斜体,那就是 4 | 2 = 6 (0110)而你上面的程序是启用/禁用粗体,当前字体已经是粗体,那就要禁用粗体
粗体取反 ~4= -5 (1011) 在与其他属性做与运算,~4 & 6=2 (0010)明白了么
Visual Studio 2005 其他版本 Visual Studio 2010 Visual Studio 2008 ~ 运算符对操作数执行按位求补运算,其效果相当于反转每一位。按位求补运算符是为 int、uint、long 和 ulong 类型预定义的。备注
--------------------------------------------------------------------------------用户定义的类型可重载 ~ 运算符。有关更多信息,请参见 operator。在枚举时通常允许整型运算。示例
--------------------------------------------------------------------------------复制// cs_operator_bitwise_compl.cs
using System;
class MainClass
{
static void Main()
{
int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
foreach (int v in values)
{
Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
}
}
}
输出
--------------------------------------------------------------------------------~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
http://msdn.microsoft.com/zh-cn/library/d2bd4x66(v=VS.80).aspx