Expression.LeftShift 方法 (Expression, Expression, MethodInfo)
更新:2007 年 11 月
创建一个表示按位左移运算的 BinaryExpression。可指定实现方法。
程序集: System.Core(在 System.Core.dll 中)
public static BinaryExpression LeftShift( Expression left, Expression right, MethodInfo method )
public static BinaryExpression LeftShift( Expression left, Expression right, MethodInfo method )
public static function LeftShift( left : Expression, right : Expression, method : MethodInfo ) : BinaryExpression
参数
- left
- 类型:System.Linq.Expressions.Expression
要将 Left 属性设置为与其相等的 Expression。
- right
- 类型:System.Linq.Expressions.Expression
要将 Right 属性设置为与其相等的 Expression。
- method
- 类型:System.Reflection.MethodInfo
要将 Method 属性设置为与其相等的 MethodInfo。
返回值
类型:System.Linq.Expressions.BinaryExpressionNodeType 属性等于 LeftShift 并且 Left、Right 和 Method 属性设置为指定值的 BinaryExpression。
| 异常 | 条件 |
|---|---|
| ArgumentNullException | left 或 right 为 null。 |
| ArgumentException | method 不为 null 且其表示的方法返回 void;method 不为 static(在 Visual Basic 中不为 Shared);或者 method 不是正好带两个参数。 |
| InvalidOperationException | method 为 null,并且没有为 left.Type 和 right.Type 定义左移位运算符。 |
生成的 BinaryExpression 将 Method 属性设置为实现方法。Type 属性设置为节点的类型。如果提升节点,则 IsLifted 和 IsLiftedToNull 属性均为 true。否则,二者均为 false。Conversion 属性为 null。
下面的信息描述实现方法、节点类型以及是否提升节点。
实现方法
下面的规则用于确定如何为运算选择实现方法:
节点类型与提升/不提升
如果实现方法不为 null:
如果 left.Type 和 right.Type 可赋给实现方法的相应参数类型,则不提升节点。节点类型为实现方法的返回类型。
如果满足下面的两个条件,则提升节点,并且节点类型为与实现方法的返回类型相对应的可以为 null 的类型:
left.Type 和 right.Type 均为值类型,其中至少一个可以为 null,同时相应的不可以为 null 的类型等于实现方法的相应参数类型。
实现方法的返回类型是不可以为 null 的值类型。
如果实现方法为 null:
如果 left.Type 和 right.Type 均不可以为 null,则不提升节点。节点类型为预定义左移位运算符的结果类型。
如果 left.Type 和 right.Type 均可以为 null,则提升节点。节点类型为与预定义左移位运算符的结果类型相对应的可以为 null 的类型。
Windows Vista, Windows XP SP2, Windows Server 2003
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。