我使用按位枚举从函数返回值
[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
)的结果总是零。