4

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

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

并有一个功能

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

调试器显示 returnVar 在AND 赋值运算符执行之前和之后具有相同的值(即 PatientRecord.NoRecord (0) 或 PatientRecord.SameScreeningDate (2))。

为什么会这样,有没有比以下更简洁的解决方案:

returnVar = returnVar & PatientRecord.SameEnrollmentDate;

谢谢。

4

1 回答 1

4

您需要按位 OR ( |) 而不是按位 AND ( &):

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

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

于 2013-06-09T05:26:19.083 回答