他们是 复合赋值
运算符,(非常宽松地)翻译
x |= y;
进入
x = x | y;
和相同
&。在某些情况下,关于隐式强制转换还有更多详细信息,并且目标变量仅被评估一次,但这基本上就是要点。
就非复合运算符而言,
&它是按位“ AND”和
|按位“ OR”。
编辑:在这种情况下,您想要
Folder.Attributes &= ~FileAttributes.System。要了解原因:
~FileAttributes.System
表示“ 除System
” 以外的 所有属性(~
按位表示)&
表示“结果是出现在操作数两侧的所有属性”
因此,它基本上起着掩码的作用- 仅 保留出现在其中的属性(“除系统外的所有内容”)。一般来说:
|=
只会向目标 添加 位&=
只会从目标中 删除 位



