Техника C #, используемая со свойством Style класса Font - PullRequest
2 голосов
/ 06 марта 2012

Может кто-нибудь помочь объяснить следующий фрагмент кода.

        richTextBox1.Font = new Font(richTextBox1.Font.FontFamily,
            richTextBox1.Font.Size,
            richTextBox1.Font.Style ^ FontStyle.Underline);

Код относится к событию onclick в форме и используется для включения и выключения стиля подчеркивания шрифта. Я думаю, что понимаю «Исключительно». Или, если любой из входных данных имеет значение «истина», то результат имеет значение «истина», но если оба значения имеют значение «истина» или оба имеют значение «ложь», вывод будет ложным.

Я не понимаю, как это применяется к свойству Style, хотя, как оно хранит эти данные, это свойство Style, а не просто одно перечисляемое значение, которое записывает перечисление. Я не понимаю, как это свойство может записывать результаты более чем одного значения, или это не так?

Ответы [ 2 ]

5 голосов
/ 06 марта 2012

Свойство Style представляет собой flags enum, где значения определены как степени двух: 1, 2, 4, 8. Они могут быть объединены, поскольку каждый из них является только однимнемного в другой позиции.Скажем, используя OR для получения текста, выделенного жирным курсивом:

  0001 Bold   = 1
| 0010 Italic = 2
-----------------
  0011 Bold/Italic = 3

И XOR перевернет его, как вы говорите:

  0011 Bold/Italic = 3
^ 0010 Italic      = 2
----------------------
  0001 Bold        = 1

и

  0001 Bold   = 1
^ 0010 Italic = 2
-----------------
  0011 Bold/Italic = 3
0 голосов
/ 06 марта 2012

Перечисление стиля имеет атрибут flags .Это позволяет рассматривать его как двоичное число, где каждый бит представляет отдельный атрибут стиля.Двоичная арифметика может использоваться для составления коллекции стилей, например, жирный и курсив в одно значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...