gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:21:03 24 4
gpt4 key购买 nike

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com