我使用按位枚举从函数返回值

[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;

谢谢。

最佳答案

您需要按位或(|)而不是按位和(&):

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

零(NoRecord=0x0)的结果总是零。

08-27 10:30