比如: this.keyData = Keys.A
public virtual bool Alt { get { return ((this.keyData & Keys.Alt) == Keys.Alt); } }
当年学习的时候,与或非,反码补码都没弄清
this.keyData = Keys.A | Keys.Alt;
(Keys.Alt & Keys.Alt)==Keys.Alt
为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。 - msdn
所以,当keyData = true,Keys.Alt = true 的情况下,(this.keyData & Keys.Alt)的结果是true,然后 true == Keys.Alt结果也为true
如果你想直接对比keyData 和Keys.Alt来进行返回的话可以直接return (keyData == Keys.Alt);