Что делает '^' в c # (Enums)? - PullRequest
       41

Что делает '^' в c # (Enums)?

9 голосов
/ 24 октября 2008

Я читал какой-то сторонний код и нашел это:

x.Flags = x.Flags ^ Flags.Hidden;

Что это делает?

Я использовал '&' и '|' для побитовых 'и' и 'или' с перечислениями, но я впервые вижу этот символ ...

Ответы [ 4 ]

22 голосов
/ 24 октября 2008

^ - побитовый оператор XOR в C #.

РЕДАКТИРОВАТЬ: a ^ b возвращает true, если a равно true и b равно false или если a равно false и b равно true, но не оба.

15 голосов
/ 24 октября 2008

Это будет оператор 'xor'. В вашем примере кода он будет включать или выключать Flags.Hidden, в зависимости от текущего значения x.Flags.

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

2 голосов
/ 24 октября 2008

Это эксклюзивный оператор OR (XOR), пример использования этой ссылки

http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx

2 голосов
/ 24 октября 2008

Взято из здесь :

Для целочисленных типов ^ вычисляет побитовый исключающий ИЛИ его операндов. Для булевых операндов ^ вычисляет логический исключающий или его операнды; то есть результат верен, если и только если нечетное число его операндов правда.

...