Sudoku.Board.UnmakeMove C# (CSharp) Method

UnmakeMove() public method

public UnmakeMove ( Move move ) : Board
move Move
return Board
        public Board UnmakeMove(Move move)
        {
            int row = (int)move.Row;
            int column = (int)move.Column;
            if (_BoardValues[column, row] == Values.None)
                throw new ArgumentException();

            _BoardValues[column, row] = Values.None;
            int bit = ~((int)move.Value);
            _RowValues[row] = (Values) ((int)_RowValues[row] & bit);
            _ColumnValues[column] = (Values)((int)_ColumnValues[column] & bit);
            _RegionValues[column / 3, row / 3] = (Values) ((int) _RegionValues[column / 3, row / 3] & bit);
            _EmptySquaresCount++;

            return this;
        }