if((attributes&FileAttributes.Hidden)== FileAttributes.Hidden){}如何工作?

for*_*oop 6 .net c# bitmask

页面上,我看到以下代码:

if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么会这样.

为什么attributes & FileAttributes.Hidden)?实际上,单一检查有什么作用attributes?它检查它是否不为空?我有一种感觉,但我觉得很奇怪.随机而怪异.

m0s*_*0sa 15

这是简单的布尔逻辑.该==操作仅返回true如果双方有相同的值.因此,您必须使用要比较的标志来屏蔽attributes值.考虑这两个例子(值组成):

真正:

  0010001 // attributes
& 0000001 // FileAttributes.Hidden
  -------
= 0000001 // FileAttributes.Hidden
Run Code Online (Sandbox Code Playgroud)

假:

  0011000 // attributes
& 0000001 // FileAttributes.Hidden
  -------
= 0000000 // FileAttributes.None
Run Code Online (Sandbox Code Playgroud)