通过


Expression.Divide 方法

定义

创建一个表示算术除法运算的运算 BinaryExpression

重载

名称 说明
Divide(Expression, Expression)

创建一个表示算术除法运算的运算 BinaryExpression

Divide(Expression, Expression, MethodInfo)

创建一个表示算术除法运算的运算 BinaryExpression 。 可以指定实现方法。

Divide(Expression, Expression)

Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs

创建一个表示算术除法运算的运算 BinaryExpression

public:
 static System::Linq::Expressions::BinaryExpression ^ Divide(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression Divide(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member Divide : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function Divide (left As Expression, right As Expression) As BinaryExpression

参数

left
Expression

要将属性设置为的Left一个Expression

right
Expression

要将属性设置为的Right一个Expression

返回

一个BinaryExpression属性NodeType等于DivideLeftRight属性设置为指定值。

例外

leftrightnull.

未为 left该除法运算符定义 。键入和 right。类型。

示例

下面的代码示例演示如何创建一个表达式,该表达式将第一个参数除以第二个参数。

// Add the following directive to your file:
// using System.Linq.Expressions;

// This expression divides its first argument by its second argument.
// Both arguments must be of the same type.
Expression divideExpr = Expression.Divide(
    Expression.Constant(10.0),
    Expression.Constant(4.0)
);

// Print out the expression.
Console.WriteLine(divideExpr.ToString());

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda<Func<double>>(divideExpr).Compile()());

// This code example produces the following output:
//
// (10/4)
// 2.5
' Add the following directive to your file:
' Imports System.Linq.Expressions   

' This expression divides its first argument by its second argument.
' Both arguments must be of the same type.
Dim divideExpr As Expression = Expression.Divide(
    Expression.Constant(10.0),
    Expression.Constant(4.0)
)

' Print the expression.
Console.WriteLine(divideExpr.ToString())

' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda(Of Func(Of Double))(divideExpr).Compile()())

' This code example produces the following output:
'
' (10/4)
' 2.5

注解

生成的BinaryExpressionMethod属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLiftedIsLiftedToNull 属性均为 true。 否则,它们为 false。 属性 Conversionnull.

以下信息描述了实现方法、节点类型以及节点是否被提升。

实现方法

以下规则确定操作的实现方法:

  • Type如果任left一类型的属性或right表示重载除法运算符的用户定义类型,则MethodInfo表示该方法是实现方法。

  • 否则,如果 left.Type 和 right.Type 是数值类型,实现的方法是 null

节点类型和提升与非提升

如果实现方法不是 null

  • 如果 left.Type 和 right.Type 可以分配给实现方法的相应参数类型,则节点不会被提升。 节点的类型是实现方法的返回类型。

  • 如果满足以下两个条件,则节点被提升,并且节点的类型是与实现方法的返回类型相对应的可为 null 类型:

    • left.类型和 right.类型都是值类型,其中至少一个为可空类型,相应的非可空类型与实现方法的相应参数类型相等。

    • 实现方法的返回类型是不可为 null 的值类型。

如果实现方法是 null

  • 如果 left.Type 和 right.Type 都不可为 null,则不会提升该节点。 节点的类型是预定义除法运算符的结果类型。

  • 如果 left.Type 和 right.Type 均可为 null,则节点将被提升。 节点的类型是与预定义除法运算符的结果类型相对应的可为 null 类型。

适用于

Divide(Expression, Expression, MethodInfo)

Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs
Source:
BinaryExpression.cs

创建一个表示算术除法运算的运算 BinaryExpression 。 可以指定实现方法。

public:
 static System::Linq::Expressions::BinaryExpression ^ Divide(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression Divide(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.BinaryExpression Divide(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo? method);
static member Divide : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function Divide (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression

参数

left
Expression

要设置的属性Left等于的一个Expression

right
Expression

要设置的属性Right等于的一个Expression

method
MethodInfo

一个 MethodInfo 设置为 Method 等于的属性。

返回

一个属性等于和 <a0 /> 的属性,以及设置为指定值的属性。

例外

leftrightnull.

method 不是 null ,它表示的方法返回 void,不是 staticShared 在 Visual Basic 中),也不采用两个参数。

is 且未为 > 定义除法运算符。键入和 。类型。

注解

生成的BinaryExpressionMethod属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLiftedIsLiftedToNull 属性均为 true。 否则,它们为 false。 属性 Conversionnull.

以下信息描述了实现方法、节点类型以及节点是否被提升。

实现方法

以下规则确定操作的实现方法:

  • 如果method不是null并且它表示非 void(staticShared在 Visual Basic)方法中采用两个参数,则它是节点的实现方法。

  • 否则,如果 Typeleft 一类型的属性或 right 表示重载除法运算符的用户定义类型,则 MethodInfo 表示该方法是实现方法。

  • 否则,如果 left.Type 和 right.Type 是数值类型,实现的方法是 null

节点类型和提升与非提升

如果实现方法不是 null

  • 如果 left.Type 和 right.Type 可以分配给实现方法的相应参数类型,则节点不会被提升。 节点的类型是实现方法的返回类型。

  • 如果满足以下两个条件,则节点被提升,并且节点的类型是与实现方法的返回类型相对应的可为 null 类型:

    • left.类型和 right.类型都是值类型,其中至少一个为可空类型,相应的非可空类型与实现方法的相应参数类型相等。

    • 实现方法的返回类型是不可为 null 的值类型。

如果实现方法是 null

  • 如果 left.Type 和 right.Type 都不可为 null,则不会提升该节点。 节点的类型是预定义除法运算符的结果类型。

  • 如果 left.Type 和 right.Type 均可为 null,则节点将被提升。 节点的类型是与预定义除法运算符的结果类型相对应的可为 null 类型。

适用于