Expression.Multiply Expression.Multiply Expression.Multiply Expression.Multiply Method

定義

オーバーフロー チェックを行わない算術乗算演算を表す BinaryExpression を作成します。Creates a BinaryExpression that represents an arithmetic multiplication operation that does not have overflow checking.

オーバーロード

Multiply(Expression, Expression, MethodInfo) Multiply(Expression, Expression, MethodInfo) Multiply(Expression, Expression, MethodInfo) Multiply(Expression, Expression, MethodInfo)

オーバーフロー チェックを行わない算術乗算演算を表す BinaryExpression を作成します。Creates a BinaryExpression that represents an arithmetic multiplication operation that does not have overflow checking.

Multiply(Expression, Expression) Multiply(Expression, Expression) Multiply(Expression, Expression) Multiply(Expression, Expression)

オーバーフロー チェックを行わない算術乗算演算を表す BinaryExpression を作成します。Creates a BinaryExpression that represents an arithmetic multiplication operation that does not have overflow checking.

Multiply(Expression, Expression, MethodInfo) Multiply(Expression, Expression, MethodInfo) Multiply(Expression, Expression, MethodInfo) Multiply(Expression, Expression, MethodInfo)

オーバーフロー チェックを行わない算術乗算演算を表す BinaryExpression を作成します。Creates a BinaryExpression that represents an arithmetic multiplication operation that does not have overflow checking.

public:
 static System::Linq::Expressions::BinaryExpression ^ Multiply(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression Multiply (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
static member Multiply : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function Multiply (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression

パラメーター

left
Expression Expression Expression Expression

Expression プロパティを等しく設定する LeftAn Expression to set the Left property equal to.

right
Expression Expression Expression Expression

Expression プロパティを等しく設定する RightAn Expression to set the Right property equal to.

method
MethodInfo MethodInfo MethodInfo MethodInfo

MethodInfo プロパティを等しく設定する MethodA MethodInfo to set the Method property equal to.

戻り値

BinaryExpression と等しい NodeType プロパティと、指定した値に設定された MultiplyLeft、および Right の各プロパティを含む MethodA BinaryExpression that has the NodeType property equal to Multiply and the Left, Right, and Method properties set to the specified values.

例外

left または rightnull です。left or right is null.

methodnull ではなく、それを表すメソッドは void を返し、static (Visual Basic では Shared) ではなく、またはちょうど 2 つの引数を受け取りません。method is not null and the method it represents returns void, is not static (Shared in Visual Basic), or does not take exactly two arguments.

methodnull で、乗算演算子は left.Type および right.Type に対して定義されていません。method is null and the multiplication operator is not defined for left.Type and right.Type.

注釈

結果とBinaryExpressionしてMethod得られるには、実装メソッドに設定されたプロパティがあります。The resulting BinaryExpression has the Method property set to the implementing method. Typeプロパティは、ノードの型に設定されます。The Type property is set to the type of the node. ノードがリフトされているIsLifted場合IsLiftedToNull 、プロパティとtrueプロパティは両方ともです。If the node is lifted, the IsLifted and IsLiftedToNull properties are both true. それ以外の場合falseは、になります。Otherwise, they are false. Conversion プロパティが null である。The Conversion property is null.

次の情報では、実装メソッド、ノード型、およびノードがリフトされているかどうかについて説明します。The following information describes the implementing method, the node type, and whether a node is lifted.

メソッドの実装Implementing Method

次の規則は、操作の実装方法を決定します。The following rules determine the implementing method for the operation:

  • methodではnullなく、2つの引数を受け取るstatic voidShared以外の (Visual Basic) メソッドを表す場合は、ノードの実装メソッドです。If method is not null and it represents a non-void, static (Shared in Visual Basic) method that takes two arguments, it is the implementing method for the node.

  • それ以外の場合Typeleftまたはrightのプロパティが乗算演算子をオーバーロードするユーザー定義型を表す場合MethodInfo 、そのメソッドを表すは実装メソッドです。Otherwise, if the Type property of either left or right represents a user-defined type that overloads the multiplication operator, the MethodInfo that represents that method is the implementing method.

  • それ以外のleft場合は。「」 rightおよび「」と入力します。型は数値型で、実装メソッドはnullです。Otherwise, if left.Type and right.Type are numeric types, the implementing method is null.

ノードの種類とリフトされていない、またはリフトされていないNode Type and Lifted versus Non-Lifted

実装するメソッドがでないnull場合は、次のようになります。If the implementing method is not null:

  • left場合。「」 rightおよび「」と入力します。型は、実装するメソッドの対応する引数の型に割り当てることができます。このノードはリフトされていません。If left.Type and right.Type are assignable to the corresponding argument types of the implementing method, the node is not lifted. ノードの型は、実装メソッドの戻り値の型です。The type of the node is the return type of the implementing method.

  • 次の2つの条件が満たされると、ノードがリフトされ、ノードの型が、実装するメソッドの戻り値の型に対応する null 許容型になります。If the following two conditions are satisfied, the node is lifted and the type of the node is the nullable type that corresponds to the return type of the implementing method:

    • left.「」 rightおよび「」と入力します。型は両方とも、少なくとも1つの値が null 値を許容し、対応する null 非許容型が、実装するメソッドの対応する引数の型と等しい値型です。left.Type and right.Type are both value types of which at least one is nullable and the corresponding non-nullable types are equal to the corresponding argument types of the implementing method.

    • 実装するメソッドの戻り値の型は、null 非許容の値型です。The return type of the implementing method is a non-nullable value type.

実装するメソッドがのnull場合は、次のようになります。If the implementing method is null:

  • left場合。「」 rightおよび「」と入力します。型は両方とも null 非許容で、ノードはリフトされていません。If left.Type and right.Type are both non-nullable, the node is not lifted. ノードの型は、定義済みの乗算演算子の結果の型です。The type of the node is the result type of the predefined multiplication operator.

  • left場合。「」 rightおよび「」と入力します。型は両方とも null 値を許容し、ノードはリフトされています。If left.Type and right.Type are both nullable, the node is lifted. ノードの型は、定義済みの乗算演算子の結果の型に対応する null 許容型です。The type of the node is the nullable type that corresponds to the result type of the predefined multiplication operator.

Multiply(Expression, Expression) Multiply(Expression, Expression) Multiply(Expression, Expression) Multiply(Expression, Expression)

オーバーフロー チェックを行わない算術乗算演算を表す BinaryExpression を作成します。Creates a BinaryExpression that represents an arithmetic multiplication operation that does not have overflow checking.

public:
 static System::Linq::Expressions::BinaryExpression ^ Multiply(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression Multiply (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member Multiply : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function Multiply (left As Expression, right As Expression) As BinaryExpression

パラメーター

left
Expression Expression Expression Expression

Expression プロパティを等しく設定する LeftAn Expression to set the Left property equal to.

right
Expression Expression Expression Expression

Expression プロパティを等しく設定する RightAn Expression to set the Right property equal to.

戻り値

BinaryExpression と等しい NodeType プロパティと、指定した値に設定された Multiply プロパティおよび Left プロパティを含む RightA BinaryExpression that has the NodeType property equal to Multiply and the Left and Right properties set to the specified values.

例外

left または rightnull です。left or right is null.

乗算演算子は left.Type および right.Type に対して定義されていません。The multiplication operator is not defined for left.Type and right.Type.

2つの値を乗算する式を作成する方法を次のコード例に示します。The following code example shows how to create an expression that multiplies two values.

// Add the following directive to your file:
// using System.Linq.Expressions;  

// This expression multiplies its two arguments.
// Both arguments must be of the same type.
Expression multiplyExpr = Expression.Multiply(
    Expression.Constant(10),
    Expression.Constant(4)
);

// Print out the expression.
Console.WriteLine(multiplyExpr.ToString());

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda<Func<int>>(multiplyExpr).Compile()());

// This code example produces the following output:
//
// (10*4)
// 40
' Add the following directive to your file:
' Imports System.Linq.Expressions  

' This expression multiplies its two arguments.
' Both arguments must be of the same type.
Dim multiplyExpr As Expression = Expression.Multiply(
    Expression.Constant(10),
    Expression.Constant(4)
)

' Print the expression.
Console.WriteLine(multiplyExpr.ToString())

' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(
    Expression.Lambda(Of Func(Of Integer))(multiplyExpr).Compile()())

' This code example produces the following output:
'
' (10*4)
' 40

注釈

結果とBinaryExpressionしてMethod得られるには、実装メソッドに設定されたプロパティがあります。The resulting BinaryExpression has the Method property set to the implementing method. Typeプロパティは、ノードの型に設定されます。The Type property is set to the type of the node. ノードがリフトされているIsLifted場合IsLiftedToNull 、プロパティとtrueプロパティは両方ともです。If the node is lifted, the IsLifted and IsLiftedToNull properties are both true. それ以外の場合falseは、になります。Otherwise, they are false. Conversion プロパティが null である。The Conversion property is null.

次の情報では、実装メソッド、ノード型、およびノードがリフトされているかどうかについて説明します。The following information describes the implementing method, the node type, and whether a node is lifted.

メソッドの実装Implementing Method

次の規則は、操作に対して選択されている実装方法を決定します。The following rules determine the selected implementing method for the operation:

  • Type MethodInfoまたはのプロパティが、乗算演算子をオーバーロードするユーザー定義型を表している場合、そのメソッドを表すは実装メソッドです。right leftIf the Type property of either left or right represents a user-defined type that overloads the multiplication operator, the MethodInfo that represents that method is the implementing method.

  • それ以外のleft場合は。「」 rightおよび「」と入力します。型は数値型で、実装メソッドはnullです。Otherwise, if left.Type and right.Type are numeric types, the implementing method is null.

ノードの種類とリフトされていない、またはリフトされていないNode Type and Lifted versus Non-Lifted

実装するメソッドがでないnull場合は、次のようになります。If the implementing method is not null:

  • left場合。「」 rightおよび「」と入力します。型は、実装するメソッドの対応する引数の型に割り当てることができます。このノードはリフトされていません。If left.Type and right.Type are assignable to the corresponding argument types of the implementing method, the node is not lifted. ノードの型は、実装メソッドの戻り値の型です。The type of the node is the return type of the implementing method.

  • 次の2つの条件が満たされると、ノードがリフトされ、ノードの型が、実装するメソッドの戻り値の型に対応する null 許容型になります。If the following two conditions are satisfied, the node is lifted and the type of the node is the nullable type that corresponds to the return type of the implementing method:

    • left.「」 rightおよび「」と入力します。型は両方とも、少なくとも1つの値が null 値を許容し、対応する null 非許容型が、実装するメソッドの対応する引数の型と等しい値型です。left.Type and right.Type are both value types of which at least one is nullable and the corresponding non-nullable types are equal to the corresponding argument types of the implementing method.

    • 実装するメソッドの戻り値の型は、null 非許容の値型です。The return type of the implementing method is a non-nullable value type.

実装するメソッドがのnull場合は、次のようになります。If the implementing method is null:

  • left場合。「」 rightおよび「」と入力します。型は両方とも null 非許容で、ノードはリフトされていません。If left.Type and right.Type are both non-nullable, the node is not lifted. ノードの型は、定義済みの乗算演算子の結果の型です。The type of the node is the result type of the predefined multiplication operator.

  • left場合。「」 rightおよび「」と入力します。型は両方とも null 値を許容し、ノードはリフトされています。If left.Type and right.Type are both nullable, the node is lifted. ノードの型は、定義済みの乗算演算子の結果の型に対応する null 許容型です。The type of the node is the nullable type that corresponds to the result type of the predefined multiplication operator.

適用対象