System.Linq.Expressions.Expression.Add 方法

注释

本文提供了此 API 参考文档的补充说明。

Add 方法会返回 BinaryExpression,其中 Method 属性设置为实现方法。 该 Type 属性设置为节点的类型。 如果节点被提升,则 IsLiftedIsLiftedToNull 属性均为 true。 否则,它们为 false。 属性 Conversionnull.

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

实现方法

以下规则确定操作的所选实施方法。

  • 如果Typeleftright属性代表重载加法运算符的用户定义类型,那么表示该方法的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,则节点将被提升。 节点的类型是与预定义加法运算符的结果类型相对应的可空类型。