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

问题描述:

在我的C#窗口商店应用程序我有以下代码行来检测是否按下CTRL键。我从一个在线样本中获得了这个代码,它完美地工作。有人可以向我解释这行c#代码吗?

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

具体来说,我从来没有见过if语句之前的语法。

+是将int或连接字符串,并& &是结合2个布尔表达式,那么,是什么&做在这种情况下?

+1

按位与..... –

+0

[How&works when int res = num1&num2 where num1 and num2 is integer type]可能的重复(http://*.com/questions/13700695/how-作品 - 当-INT-RES-NUM1-NUM2-其中-NUM1和 - NUM2-是整数型) –

这是一个按位与,并检查是否确定位(或位已设置)。

您可能想让Google针对枚举上的FlagsAttribute。他们解释你想了解的内容。

在这个例子中,你想看到控制的关键状态。

这是一个按位AND运算符。你的状态可能包含其他几个位标志,但是你只对这种情况下的“Down”标志感兴趣。所以&运算符将所有其他(可能的)标志过滤掉,所以只有这个标志被==运算符测试。