具有按位枚举的C#AND赋值运算符(& =)

时间:2013-06-09 05:24:26

标签: c# enums bitwise-operators

我使用按位枚举从函数

返回值
[Flags]
private enum PatientRecord { NoRecord=0x0, SameEnrollmentDate=0x1, SameScreeningDate=0x2 }

并具有

功能
var returnVar = PatientRecord.NoRecord;
....
if (condition...)
{
   returnVar &= PatientRecord.SameEnrollmentDate;
}
return returnVar

调试器显示returnVar在执行AND assignment operator之前和之后具有相同的值(是PatientRecord.NoRecord(0)或PatientRecord.SameScreeningDate(2))。

为什么会这样,是否有任何解决方案比:

returnVar = returnVar & PatientRecord.SameEnrollmentDate;

感谢。

1 个答案:

答案 0 :(得分:3)

你想要按位OR(|)而不是按位AND(&):

var returnVar = PatientRecord.NoRecord;
....
if (condition...)
{
   returnVar |= PatientRecord.SameEnrollmentDate;
   //        ^ Bitwise OR assignment
}

与零(NoRecord=0x0)进行AND运算将始终为零。