c# winform有一道位运算 请高手帮我解释一下

来源:百度知道 编辑:UC知道 时间:2024/05/28 07:15:53
private void fontItalic_Click(object sender, EventArgs e)
{
Font oldFont = label1.Font;
Font newFont;

newFont = new Font(oldFont, oldFont.Italic == true ? oldFont.Style & ~FontStyle.Italic : oldFont.Style | FontStyle.Italic);
label1.Font = newFont;
}

private void fontItalic_Click(object sender, EventArgs e)
{
Font oldFont = label1.Font;
Font newFont;

newFont = new Font(oldFont, oldFont.Italic == true ? oldFont.Style & ~FontStyle.Italic : oldFont.Style | FontStyle.Italic);
label1.Font = newFont;
}

这不是位运算,是逻辑运算,
把oldFont.Italic == true ? oldFont.Style & ~FontStyle.Italic : oldFont.Style | FontStyle.Italic改成
((oldFont.Italic == true) ? (oldFont.Style & ~FontStyle.Italic) : (oldFont.Style | FontStyle.Italic))
这样,你就可以明白了吧,
再改成

private void fontItalic_Click(object sender, EventArgs e)
{
Font oldFont = label1.Font;
Font newFont;

//newFont = new Font(oldFont, oldFont.Italic == true ? oldFont.Style & ~FontStyle.Italic : oldFont.Style | FontStyle.Italic);
if(oldFont.Italic){
newFont = new Font(oldFont,"(oldFont.Style & ~FontStyle.Italic));
}
else
{
newFont = new Font(oldFont,(oldFont