C# 如何在C中显示逻辑and和xor之后#
我是初学者,所以请对我放轻松 我写了这个代码:C# 如何在C中显示逻辑and和xor之后#,c#,arrays,.net,enums,xor,C#,Arrays,.net,Enums,Xor,我是初学者,所以请对我放轻松 我写了这个代码:((x.Tags??0)和byteFlags))^(byteFlags)>0) x、 标记是长数据类型 (long)byteFlagEnum.something&(long)byteFlagEnum.thing 有byteFlagEnum的结构 public enum HotelBookTag : long { .... = 1 << 0, ... = 1 << 1, .... = 1 <<
((x.Tags??0)和byteFlags))^(byteFlags)>0)
x、 标记是长数据类型
(long)byteFlagEnum.something&(long)byteFlagEnum.thing代码>
有byteFlagEnum的结构
public enum HotelBookTag : long
{
.... = 1 << 0,
... = 1 << 1,
.... = 1 << 2,
..... = 1 << 3,
thing = 1 << 4,
somethings = 1 << 5,
}
public enum HotelBookTag:long
{
....=1这可能是您的括号-导致编译器在按位操作之前先计算byteFlags>0
到bool
。您可以尝试:
((x.Tags±0)和byteFlags)^(byteFlags))>0)
运算符“^”不能应用于“long”和“bool”类型的操作数
比较运算符(如>
)的优先级高于按位/逻辑运算符。这有助于表达式(如:
if(a == b && c > d)
如果逻辑具有更高的优先级,则需要更多的括号才能使c按正确的顺序进行操作
你的表情像
a ^ b > c
但是,在a^b周围需要括号,否则c#将首先生成一本书,然后它尝试用a
(你的long)进行异或运算。你可能需要添加括号来停止c#首先用byteFlags>0
创建一个bool,然后用表达式的其余部分对bool进行异或运算,例如((x.Tags??0)&byteFlags)^byteFlags)>0
我在linq查询中添加了括号我在上面的评论中写道我在linq查询中添加了括号你能分享你的linq查询吗?我犯了错误我很抱歉