C# 如何仅使用整数和标准数学检查标志值

C# 如何仅使用整数和标准数学检查标志值,c#,sharepoint,flags,sharepoint-workflow,workflow-activity,C#,Sharepoint,Flags,Sharepoint Workflow,Workflow Activity,当我只有ints值时,我想检查标志值: 因此,当我有int x=54时,这意味着它是0110110,但我正在执行sharepoint声明性自定义操作,不可能创建标志代码等。我只能执行简单表达式,不使用枚举 现在我得到了一天int monday=32 所以我的问题是: 如何检查54是否有标志32,可以是数学方法,也可以是简单循环的简单算法 更新: 参考安德鲁·惠特克 出错 无法转换表达式“(workDaysValueInt&32)==32”,因为 以下错误之一:逻辑操作仅允许布尔数据 类型 `

当我只有ints值时,我想检查标志值:

因此,当我有
int x=54
时,这意味着它是0110110,但我正在执行sharepoint声明性自定义操作,不可能创建标志代码等。我只能执行简单表达式,不使用枚举

现在我得到了一天
int monday=32

所以我的问题是:

如何检查54是否有标志32,可以是数学方法,也可以是简单循环的简单算法

更新:

参考安德鲁·惠特克

出错

无法转换表达式“(workDaysValueInt&32)==32”,因为 以下错误之一:逻辑操作仅允许布尔数据 类型

`


有趣的是,当我使用原始数据时,例如(54&32)==32,它完全没有错误

如果我理解正确,您应该能够使用按位
&
并将结果与您检查的星期几进行比较:

int Monday = 32;
int days = 54;

bool hasMonday = (days & Monday) == Monday;
下面是它的样子:

  110110
& 100000
  -------
  100000

之所以这样做,是因为当您使用整数值作为标志(并使用按位组合标志)时,
&
操作的结果与标志值将产生您正在使用的标志,如果它包含该标志,从某种意义上说,去掉价值中包含的其他信息。

你的回答绝对正确。。。但是,奇怪的是,当我使用变量时,我得到了一个错误“无法转换表达式”(workDaysValueInt&32)==32”,原因是以下错误:逻辑操作只允许布尔数据类型。“这可能是sharepoint的一个问题。。。恐怕我对SharePoint不太了解。根据你的回答,我的更新问题在某种程度上是好的