如何在 C# 中显示逻辑和之后的异或
How to show logical and after that xor in 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'
这可能是您的括号 - 导致编译器在按位运算之前首先将 byteFlags > 0
评估为 bool
。你能试试吗:
(((x.Tags ?? 0) & byteFlags) ^ (byteFlags)) > 0)
Operator '^' cannot be applied to operands of type 'long' and 'bool'
>
等比较运算符的优先级高于 bitwise/logical 运算符。这有助于像这样的表达式:
if(a == b && c > d)
如果逻辑具有更高的优先级,则需要更多的括号才能使 c# 以正确的顺序执行操作
你的表情像
a ^ b > c
但是,需要在 a^b 周围加上括号,否则 c# 将执行 b>c 首先生成一本书,然后尝试与 a
(您的 long)
进行异或
我是初学者,请放轻松。
我写了这段代码:((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'
这可能是您的括号 - 导致编译器在按位运算之前首先将 byteFlags > 0
评估为 bool
。你能试试吗:
(((x.Tags ?? 0) & byteFlags) ^ (byteFlags)) > 0)
Operator '^' cannot be applied to operands of type 'long' and 'bool'
>
等比较运算符的优先级高于 bitwise/logical 运算符。这有助于像这样的表达式:
if(a == b && c > d)
如果逻辑具有更高的优先级,则需要更多的括号才能使 c# 以正确的顺序执行操作
你的表情像
a ^ b > c
但是,需要在 a^b 周围加上括号,否则 c# 将执行 b>c 首先生成一本书,然后尝试与 a
(您的 long)