При использовании счетчиков, если вы указали атрибут [Flags] поверх члена «enum», это позволяет пользователю выбирать более одного счетчика за один раз. Что я имею в виду следующее: -
если это ваш переписчик: -
[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 бы be 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# (в контексте счетчиков).
Но вся строка не закомментирована ...? – JustinStolle
О да, вы правы - это очевидно здесь, но не в редакторе (из-за подсветки синтаксиса цвета (отсутствие этого в моей установке VS2003)). Итак, я отредактирую вопрос соответствующим образом. –
Закрыть, но нет обмана: http://stackoverflow.com/questions/5705262/what-does-pipe-mean-in-c –