繁体   English   中英

C#中的“| =”运算符是什么?

[英]What is the “|=” operator in C#?

在研究错误的原因时,我遇到了这行代码:

Status |= (int)states.Reading;

C#中的“| =”运算符是什么?

因此“状态”定义如下:

public static int Status 

...使用存取器和mutator(或“getter”和“setter”),而“states”以这种方式定义:

[Flags]
public  enum states

它是“按位逻辑OR”运算符,如此处所定义

x |= y等于x = x | y x = x | y

另外,如果您想了解更多关于“|”的信息 操作员本身,你可以在这里这样做

如果您在“enum”成员之上指定了[Flags]属性,则使用枚举器时,这使用户可以一次性选择多个枚举器。 我的意思是: -

如果这是你的普查员: -

[Serializable, DataContract(Namespace = "Company.Domain.LOB.Handler")]
[Flags]
public enum BankItemStatus
{
    [EnumMember]
    UnBatched,
    [EnumMember]
    Batched,
    [EnumMember]
    Sent,
    [EnumMember]
    ReplyReceived,
    [EnumMember]
    Closed
}

现在如果你像这样使用Enum: -

BankItemStatus bankItemStatus = BankItemStatus.UnBatched;
BankItemStatus bankItemStatus = BankItemStatus.Sent;

bankItemStatus保存的最终值是BankItemStatus.Sent。 您可以这样检查: -

if(bankItemStatus.UnBatched==BankItemStatus.UnBatched) //FALSE
if(bankItemStatus.Sent==BankItemStatus.Sent) //TRUE

现在,如果你这样做: -

BankItemStatus bankItemStatus = BankItemStatus.UnBatched;
bankItemStatus |= bankItemStatus.Sent

您将看到bankItemStatus现在同时具有枚举成员。 您可以这样检查: -

if(bankItemStatus.UnBatched==BankItemStatus.UnBatched) //TRUE
if(bankItemStatus.Sent==BankItemStatus.Sent) //TRUE

希望有助于理解在C#中使用| =运算符(在枚举器的上下文中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM