2015-04-01 3 views
-2

В следующем блоке кода есть несколько поразрядных OR. Я никогда не использовал их раньше, поэтому я пытался понять, что означал блок кода.Что такое | в C# здесь?

Document doc = new Document("CleanupOptions.docx"); 
    doc.MailMerge.CleanupOptions = MailMergeCleanupOptions.RemoveUnusedRegions | 
    MailMergeCleanupOptions.RemoveUnusedFields | 
    MailMergeCleanupOptions.RemoveContainingFields; 
    doc.MailMerge.ExecuteWithRegions(dataSet); 

Так что в этом блоке выше, если бы я использовал doc.MailMerge.CleanupOptions, как бы я выбрать любой из утверждений, что CleanupOptions равны? Или все они объединены?

+1

Этот Q/A имеет хорошее объяснение перечислений с помощью [Флаги]: http://stackoverflow.com/questions/8447/what-does-the-flags-enum-attribute-mean-in-c – Wiseguy

+1

это о [flags] (https://msdn.microsoft.com/en-US/library/cc138362.aspx) –

+0

Предполагая, что 'CleanupOptions' является перечислением в битовом поле, это просто конкатцирует константы ... –

ответ

0

The MailMergeCleanupOptions является перечислением с указанной FlagsAttribute. Это позволяет вам использовать бит-мудрые или для объединения значений в коллекцию. Обычно значения имеют значения двух или комбинаций флагов.

+0

На самом деле это не' Flags], потому что этот атрибут очень мало. Это перечисление в сочетании с тем, как он интерпретируется кодом потребления. – harold

+0

Компилятор будет жаловаться, если вы побито или перечислите, у которого нет атрибута [Флаги]. –

+0

Нет, этого не случилось, вы даже заставили меня достаточно сомневаться, что я пошел попробовать. – harold

Смежные вопросы