[英]What is the “|=” operator in C#?
在研究错误的原因时,我遇到了这行代码:
Status |= (int)states.Reading;
C#中的“| =”运算符是什么?
因此“状态”定义如下:
public static int Status
...使用存取器和mutator(或“getter”和“setter”),而“states”以这种方式定义:
[Flags]
public enum states
如果您在“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.