Определение и использование бит-маски в C#

Пример Понимание бит-масок в C# объясняет, как использовать бит маски. Чтобы определить битовую маску, просто создайте enum и присвойте ему атрибут Flags, как в следующем коде.

Если вы не укажете числовые значения для перечисляемых имен, перечисление даст им значения 1, 2, 3 и так далее. Если вы хотите, чтобы все имена отображали разные значения, вы должны установить их равными разным степеням 2, как в предыдущем коде. Затем вы можете комбинировать их в любой комбинации с помощью побитовых операторов.

Если вы не укажете числовые значения для перечисляемых имен, перечисление даст им значения 1, 2, 3 и так далее. Если вы хотите, чтобы все имена отображали разные значения, вы должны установить их равными разным степеням 2, как в предыдущем коде. Затем вы можете комбинировать их в любой комбинации с помощью побитовых операторов.

...

enum автоматически не делает значения равными степеням из двух, так что вы получаете с помощью атрибута Flags? Атрибут сообщает разработчикам кода и другим программам, что перечисления, отмеченные атрибутом, предназначены для бит-масок. Еще более полезным является тот факт, что он позволяет enum обрабатывать комбинированные значения при вызове метода ToString. Например, рассмотрим следующий код.

Каждое из этих операторов делает значение, которое объединяет два других значения. Определение кода NormalEnum совпадает с определением BitmaskEnum, за исключением того, что он не использует атрибут Flags. Оба общих значения: 1 | 2 = 0001 | 0010 = 0011 = 3.

При отображении вызова методов ToString значения, однако, C# знает, что bitmask_value является типом флага, поэтому он отображает его значение соответствующим образом. Следующий текст показывает, как программа отображает два значения.

Пример программы отображает различные значения в TextBox при запуске. Например, следующий код показывает, как программа отображает значение NormalEnum.Value1.

Сначала этот оператор отображает само значение. Программа автоматически преобразует ее в текст, поэтому результатом является имя перечислимого значения. Затем код добавляет значение, преобразованное в целое число, а затем новую строку. Код аналогично отображает другие значения.

Источник: http://csharphelper.com/blog/2016/10/define-and-use-bit-masks-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *