2016-09-06 5 views
-7

Итак, у меня есть часть моего кода, где у меня есть переменная, которая равна 0 или 1, и я хочу получить обратное. В действительности это enum и мой точный кодМне «нужен» классный способ написать (x == 0? 1: 0)

_Player other = player == _Player.FIRST ? _Player.SECOND : _Player.FIRST; 

но мне интересно, есть ли фантазии Bitshift способ сделать это.

+0

Используйте эксклюзивный или: игрок^1 – jdweng

+1

использовать логические вместо этого, и отрицает свойство '_Player other =! player' – Sherlock

+0

Довольно конкретный вопрос, пользователь. Добавление к предложениям: вы можете написать функцию, которая сделает это для вас, и возвращает объект _Player. – Thumper

ответ

0

Вы должны использовать extension method for enum type: прохладно и читаемый путь!

enum Player 
{ 
    FIRST, 
    SECOND 
} 

static class PlayerMethods 
{ 

    public static String swap(this Player s) 
    { 
     switch (s1) 
     { 
      case Player.FIRST: 
       return Player.SECOND; 
      case Player.SECOND: 
       return Player.FIRST;    
     } 
    } 
} 

и использовать его:

class Program 
{ 


    static void Main(string[] args) 
    { 
     Player one = Player.FIRST; 
     Player other = one.Swap(); 
    } 
} 
0

Один хороший способ, использует,

x = !x 

, когда х является булево