微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 C# 中显示逻辑和之后的异或

如何解决如何在 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 举报,一经查实,本站将立刻删除。