[英]C# Converting set flags in a variable of type flag enumeration to an array of integers
[英]c# set two flags with one flag together
当时我有两个按钮用于两个标志。 我想要 1 个设置两个标志的按钮
这些是标志:
if (InteractiveInput.Checked) flags |= CONNECT_INTERACTIVE;
if (PromptInput.Checked) flags |= CONNECT_PROMPT;
我想要:
if (InteractiveInput.Checked) flags |= CONNECT_INTERACTIVE & CONNECT_PROMPT;'''
按位与 (&) 表示每个位都为 1 的组合。
对于枚举标志值,这通常给出 0/None,因为除特殊情况外,枚举标志值故意是唯一的(按位),因此没有与其他枚举值匹配的位。
你想要按位或:
if (InteractiveInput.Checked)
flags |= CONNECT_INTERACTIVE | CONNECT_PROMPT;
想象一下下面的例子:
[Flags]
public enum AdditionalCarParts
{
None,
AirConditioning,
Sunroof,
RearDoors
}
这被隐式定义为:
[Flags]
public enum AdditionalCarParts
{
None = 0,
AirConditioning = 1,
Sunroof = 2,
RearDoors = 4
}
或二进制:
0
1
10
100
如您所见,这些都没有匹配,因此 AND 永远不会返回 None(0) 以外的任何内容。
使用不同运算符按位组合它们的两个示例:
AirConditioning (decimal: 1, binary: 001) & Sunroof (decimal: 2, binary: 010) = None (decimal: 0, binary: 000)
AirConditioning (decimal: 1, binary: 001) | Sunroof (decimal: 2, binary: 010) = AirConditioning | Sunroof (decimal: 3, binary: 011)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.