System.Linq.Expressions.Expression.Add 方法
本文提供了此 API 参考文档的补充说明。
该方法 Add 返回一个 BinaryExpression 属性 Method 设置为实现方法。 该 Type 属性设置为节点的类型。 如果提升节点,则IsLifted两者true
均为IsLiftedToNull属性。 否则,它们是 false
。 Conversion 属性为 null
。
以下信息描述了实现方法、节点类型以及节点是否已提升。
实现方法
以下规则确定操作的所选实现方法:
- Type如果任
left
一类型的属性或right
表示重载加法运算符的用户定义类型,则MethodInfo表示该方法是实现方法。 - 否则,如果
left
为 .键入和right
。类型为数值类型,实现方法是null
。
节点类型和提升与非提升
如果实现方法不是 null
:
如果
left
。键入和right
。类型可分配给实现方法的相应参数类型,不会解除节点。 节点的类型是实现方法的返回类型。如果满足以下两个条件,则会提升节点,节点的类型是与实现方法的返回类型相对应的可为 null 类型:
left
.键入和right
。类型都是至少一个可为 null 的值类型,相应的不可为 null 类型等于实现方法的相应参数类型。- 实现方法的返回类型是不可为 null 的值类型。
如果实现方法是 null
:
- 如果
left
。键入和right
。类型都是不可为 null 的,不会解除节点。 节点的类型是预定义加法运算符的结果类型。 - 如果
left
。键入和right
。类型都是可为 null 的,将提升节点。 节点的类型是与预定义加法运算符的结果类型相对应的可为 null 类型。