本文档已存档,并且将不进行维护。

Expression.LeftShift 方法 (Expression, Expression, MethodInfo)

更新:2007 年 11 月

创建一个表示按位左移运算的 BinaryExpression。可指定实现方法。

命名空间:  System.Linq.Expressions
程序集:  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.BinaryExpression

NodeType 属性等于 LeftShift 并且 LeftRightMethod 属性设置为指定值的 BinaryExpression

异常条件
ArgumentNullException

leftrightnull

ArgumentException

method 不为 null 且其表示的方法返回 voidmethod 不为 static(在 Visual Basic 中不为 Shared);或者 method 不是正好带两个参数。

InvalidOperationException

methodnull,并且没有为 left.Type 和 right.Type 定义左移位运算符。

生成的 BinaryExpressionMethod 属性设置为实现方法。Type 属性设置为节点的类型。如果提升节点,则 IsLiftedIsLiftedToNull 属性均为 true。否则,二者均为 falseConversion 属性为 null

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

实现方法

下面的规则用于确定如何为运算选择实现方法:

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

  • 否则,如果 leftrightType 属性表示重载左移位运算符的用户定义的类型,则表示此方法的 MethodInfo 为实现方法。

  • 否则,如果 left.Type 为整型(ByteSByteInt16UInt16Int32UInt32Int64UInt64 或相应可以为 null 的类型之一)且 right.Type 为 Int32,则实现方法为 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 系统要求

.NET Framework

受以下版本支持:3.5
显示: