小编典典

| =(单管道等于)和&=(单与号等于)是什么意思

c#

在下面的行中:

//Folder.Attributes = FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;
Folder.Attributes |= FileAttributes.Directory | FileAttributes.Hidden | FileAttributes.System | FileAttributes.ReadOnly;


Folder.Attributes |= ~FileAttributes.System;
Folder.Attributes &= ~FileAttributes.System;

在C#中,|=(单个管道相等)和&=(单个与号相等)是什么意思,
我想删除系统属性并保留其他属性…


阅读 435

收藏
2020-05-19

共1个答案

小编典典

他们是 复合赋值
运算符,(非常宽松地)翻译

x |= y;

进入

x = x | y;

和相同&。在某些情况下,关于隐式强制转换还有更多详细信息,并且目标变量仅被评估一次,但这基本上就是要点。

就非复合运算符而言,&它是按位“ AND”|按位“ OR”

编辑:在这种情况下,您想要Folder.Attributes &= ~FileAttributes.System。要了解原因:

  • ~FileAttributes.System表示“ System以外的 所有属性(~按位表示)
  • & 表示“结果是出现在操作数两侧的所有属性”

因此,它基本上起着掩码的作用- 保留出现在其中的属性(“除系统外的所有内容”)。一般来说:

  • |=只会向目标 添加
  • &=只会从目标中 删除
2020-05-19