# BinaryExpression Class

## Definition

Represents an expression that has a binary operator.

`public ref class BinaryExpression : System::Linq::Expressions::Expression`

`public ref class BinaryExpression sealed : System::Linq::Expressions::Expression`

`public class BinaryExpression : System.Linq.Expressions.Expression`

`public sealed class BinaryExpression : System.Linq.Expressions.Expression`

```
type BinaryExpression = class
inherit Expression
```

```
Public Class BinaryExpression
Inherits Expression
```

```
Public NotInheritable Class BinaryExpression
Inherits Expression
```

- Inheritance

## Examples

The following example creates a BinaryExpression object that represents the subtraction of one number from another.

```
// Create a BinaryExpression that represents subtracting 14 from 53.
System.Linq.Expressions.BinaryExpression binaryExpression =
System.Linq.Expressions.Expression.MakeBinary(
System.Linq.Expressions.ExpressionType.Subtract,
System.Linq.Expressions.Expression.Constant(53),
System.Linq.Expressions.Expression.Constant(14));
Console.WriteLine(binaryExpression.ToString());
// This code produces the following output:
//
// (53 - 14)
```

```
' Create a BinaryExpression that represents subtracting 14 from 53.
Dim binaryExpression As System.Linq.Expressions.BinaryExpression = _
System.Linq.Expressions.Expression.MakeBinary( _
System.Linq.Expressions.ExpressionType.Subtract, _
System.Linq.Expressions.Expression.Constant(53), _
System.Linq.Expressions.Expression.Constant(14))
Console.WriteLine(binaryExpression.ToString())
' This code produces the following output:
'
' (53 - 14)
```

## Remarks

The following tables summarize the factory methods that can be used to create a BinaryExpression that has a specific node type, represented by the NodeType property. Each table contains information for a specific class of operations such as arithmetic or bitwise.

### Binary Arithmetic Operations

Node Type | Factory Method |
---|---|

Add | Add |

AddChecked | AddChecked |

Divide | Divide |

Modulo | Modulo |

Multiply | Multiply |

MultiplyChecked | MultiplyChecked |

Power | Power |

Subtract | Subtract |

SubtractChecked | SubtractChecked |

### Bitwise Operations

Node Type | Factory Method |
---|---|

And | And |

Or | Or |

ExclusiveOr | ExclusiveOr |

### Shift Operations

Node Type | Factory Method |
---|---|

LeftShift | LeftShift |

RightShift | RightShift |

### Conditional Boolean Operations

Node Type | Factory Method |
---|---|

AndAlso | AndAlso |

OrElse | OrElse |

### Comparison Operations

Node Type | Factory Method |
---|---|

Equal | Equal |

NotEqual | NotEqual |

GreaterThanOrEqual | GreaterThanOrEqual |

GreaterThan | GreaterThan |

LessThan | LessThan |

LessThanOrEqual | LessThanOrEqual |

### Coalescing Operations

Node Type | Factory Method |
---|---|

Coalesce | Coalesce |

### Array Indexing Operations

Node Type | Factory Method |
---|---|

ArrayIndex | ArrayIndex |

In addition, the MakeBinary methods can also be used to create a BinaryExpression. These factory methods can be used to create a BinaryExpression of any node type that represents a binary operation. The parameter of these methods that is of type NodeType specifies the desired node type.

## Properties

CanReduce |
Gets a value that indicates whether the expression tree node can be reduced. |

CanReduce |
Indicates that the node can be reduced to a simpler node. If this returns true, Reduce() can be called to produce the reduced form. (Inherited from Expression) |

Conversion |
Gets the type conversion function that is used by a coalescing or compound assignment operation. |

IsLifted |
Gets a value that indicates whether the expression tree node represents a |

IsLiftedToNull |
Gets a value that indicates whether the expression tree node represents a |

Left |
Gets the left operand of the binary operation. |

Method |
Gets the implementing method for the binary operation. |

NodeType |
Gets the node type of this Expression. (Inherited from Expression) |

Right |
Gets the right operand of the binary operation. |

Type |
Gets the static type of the expression that this Expression represents. (Inherited from Expression) |

## Methods

Accept(ExpressionVisitor) |
Dispatches to the specific visit method for this node type. For example, MethodCallExpression calls the VisitMethodCall(MethodCallExpression). (Inherited from Expression) |

Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |

GetHashCode() |
Serves as the default hash function. (Inherited from Object) |

GetType() |
Gets the Type of the current instance. (Inherited from Object) |

MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |

Reduce() |
Reduces the binary expression node to a simpler expression. |

Reduce() |
Reduces this node to a simpler expression. If CanReduce returns true, this should return a valid expression. This method can return another node which itself must be reduced. (Inherited from Expression) |

ReduceAndCheck() |
Reduces this node to a simpler expression. If CanReduce returns true, this should return a valid expression. This method can return another node which itself must be reduced. (Inherited from Expression) |

ReduceExtensions() |
Reduces the expression to a known node type (that is not an Extension node) or just returns the expression if it is already a known type. (Inherited from Expression) |

ToString() |
Returns a textual representation of the Expression. (Inherited from Expression) |

Update(Expression, LambdaExpression, Expression) |
Creates a new expression that is like this one, but using the supplied children. If all of the children are the same, it will return this expression. |

VisitChildren(ExpressionVisitor) |
Reduces the node and then calls the visitor delegate on the reduced expression. The method throws an exception if the node is not reducible. (Inherited from Expression) |