作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用按位枚举从函数返回值
[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
) 的“与”将始终得到零。
关于C# AND 赋值运算符 (&=) 与按位枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006729/
我是一名优秀的程序员,十分优秀!