如何解决如何在 C# 中显示逻辑和之后的异或
我是初学者,所以请放轻松。
我写了这段代码:((x.Tags ?? 0) & byteFlags)) ^ (byteFlags) > 0)
x.tags 是长数据类型 (long)byteFlagEnum.somethings & (long)byteFlagEnum.thing;
有byteFlagEnum的结构/>
public enum HotelBookTag : long
{
.... = 1 << 0,... = 1 << 1,.... = 1 << 2,..... = 1 << 3,thing = 1 << 4,somethings = 1 << 5,}
但它给了我这个错误
Operator '^' cannot be applied to operands of type 'long' and 'bool'
解决方法
运算符“^”不能应用于“long”和“bool”类型的操作数
像 >
这样的比较运算符比按位/逻辑运算符具有更高的优先级。这有助于以下表达式:
if(a == b && c > d)
如果逻辑具有更高的优先级,则需要更多的括号才能让 c# 以正确的顺序做事
你的表情像
a ^ b > c
但是,需要在 a^b 周围加上括号,否则 c# 将首先执行 b>c 生成一本书,然后尝试与 a
(你的长)进行异或运算
这可能是您的括号 - 导致编译器在按位运算之前首先将 byteFlags > 0
评估为 bool
。你可以试试吗:
(((x.Tags ?? 0) & byteFlags) ^ (byteFlags)) > 0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。