Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中显示逻辑and和xor之后#_C#_Arrays_.net_Enums_Xor - Fatal编程技术网

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查询吗?我犯了错误我很抱歉