Expression.Add 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建一个 BinaryExpression 表示没有溢出检查的算术加法运算。
重载
| 名称 | 说明 |
|---|---|
| Add(Expression, Expression) |
创建一个 BinaryExpression 表示没有溢出检查的算术加法运算。 |
| Add(Expression, Expression, MethodInfo) |
创建一个 BinaryExpression 表示没有溢出检查的算术加法运算。 可以指定实现方法。 |
Add(Expression, Expression)
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
- Source:
- BinaryExpression.cs
创建一个 BinaryExpression 表示没有溢出检查的算术加法运算。
public:
static System::Linq::Expressions::BinaryExpression ^ Add(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression Add(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member Add : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function Add (left As Expression, right As Expression) As BinaryExpression
参数
- left
- Expression
一个 Expression 设置为 Left 等于的属性。
- right
- Expression
一个 Expression 设置为 Right 等于的属性。
返回
一个BinaryExpression属性NodeType等于Add和LeftRight属性设置为指定值。
例外
left 或 right 为 null.
没有为 left. 定义加法运算符。键入和 right。类型。
示例
下面的代码示例演示如何创建一个添加两个整数的表达式。
// Add the following directive to your file:
// using System.Linq.Expressions;
// This expression adds the values of its two arguments.
// Both arguments must be of the same type.
Expression sumExpr = Expression.Add(
Expression.Constant(1),
Expression.Constant(2)
);
// Print out the expression.
Console.WriteLine(sumExpr.ToString());
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<int>>(sumExpr).Compile()());
// This code example produces the following output:
//
// (1 + 2)
// 3
' Add the following directive to your file:
' Imports System.Linq.Expressions
' This expression adds the values of its two arguments.
' Both arguments must be of the same type.
Dim sumExpr As Expression = Expression.Add(
Expression.Constant(1),
Expression.Constant(2)
)
' Print the expression.
Console.WriteLine(sumExpr.ToString())
' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda(Of Func(Of Integer))(sumExpr).Compile()())
' This code example produces the following output:
'
' (1 + 2)
' 3
注解
Add 方法会返回 BinaryExpression,其中 Method 属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLifted 和 IsLiftedToNull 属性均为 true。 否则,它们为 false。 属性 Conversion 为 null.
以下信息描述了实现方法、节点类型以及节点是否被提升。
实现方法
以下规则确定操作的所选实施方法。
- 如果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,则节点将被提升。 节点的类型是与预定义加法运算符的结果类型相对应的可空类型。
适用于
Add(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 ^ Add(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression Add(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.BinaryExpression Add(System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo? method);
static member Add : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function Add (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression
参数
- left
- Expression
一个 Expression 设置为 Left 等于的属性。
- right
- Expression
一个 Expression 设置为 Right 等于的属性。
- method
- MethodInfo
一个 MethodInfo 设置为 Method 等于的属性。
返回
BinaryExpression一个属性NodeType等于Add和LeftRightMethod属性设置为指定值。
例外
left 或 right 为 null.
method 不是 null ,它表示的方法返回 void,不是 static (Shared 在 Visual Basic 中),也不采用两个参数。
注解
Add 方法会返回 BinaryExpression,其中 Method 属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLifted 和 IsLiftedToNull 属性均为 true。 否则,它们为 false。 属性 Conversion 为 null.
以下信息描述了实现方法、节点类型以及节点是否被提升。
实现方法
以下规则确定操作的所选实施方法。
- 如果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,则节点将被提升。 节点的类型是与预定义加法运算符的结果类型相对应的可空类型。