有人可以向我解释这行c#代码吗?

时间:2014-01-19 09:07:00

标签: c# boolean-logic

在我的c#windows store应用程序中,我有以下代码行来检测是否按下了CTRL键。我从在线样本中获得了这个代码,它运行得很好。

var state = Window.Current.CoreWindow.GetKeyState(Windows.System.VirtualKey.Control);
if ((state & CoreVirtualKeyStates.Down) == CoreVirtualKeyStates.Down)
{
    // do something with e.Key
}

具体来说,我以前从未见过if语句中的语法。

+ 用于添加整数或串联字符串,&& 用于组合2个布尔表达式,那么& 是什么在这种情况下呢?

2 个答案:

答案 0 :(得分:8)

它是按位AND,并检查该特定位(或位是否已设置)。

您可能希望谷歌在枚举上使用FlagsAttribute。他们解释了你想要理解的内容。

在此示例中,您希望查看Control的键状态。

答案 1 :(得分:2)

这是一个按位运算符。您的状态可能包含其他几个位标志,但在这种情况下您只对“向下”标志感兴趣。所以&运算符正在过滤所有其他(可能的)标志,因此只有这一个由==运算符进行测试。