Sudoku.Board.MakeMove C# (CSharp) Method

MakeMove() public method

public MakeMove ( Move move ) : Board
move Move
return Board
        public Board MakeMove(Move move)
        {
            int row = (int)move.Row;
            int column = (int)move.Column;

            _BoardValues[column, row] = move.Value;
            //int bit = (int) move.Value;

            if ((_RowValues[row] & move.Value) == move.Value)
                throw new ArgumentException(
                    string.Format("Invalid move {2}.\nNumber {0}. \nAlready present in row {1}\n{3}",
                    move.Value,
                    move.Row,
                    move.ToString(),
                    this.ToString()
                    ));

            if ((_ColumnValues[column] & move.Value) == move.Value)
                throw new ArgumentException(
                    string.Format("Invalid move {2}.\nNumber {0} already present in column {1}\n{3}",
                    move.Value,
                    move.Column,
                    move.ToString(),
                    this.ToString()
                    ));

            if ((_RegionValues[column / 3, row / 3] & move.Value) == move.Value)
                throw new ArgumentException(
                    string.Format("Invalid move {1}.\nNumber {0} already present in this region\n{2}",
                    move.Value,
                    move.ToString(),
                    this.ToString()
                    ));

            _RowValues[row] |= move.Value;
            _ColumnValues[column] |= move.Value;
            _RegionValues[column / 3, row / 3] |= move.Value;
            _EmptySquaresCount--;

            return this;
        }