Expression.Divide メソッド

定義

算術除算演算を表す BinaryExpression を作成します。

オーバーロード

名前 説明
Divide(Expression, Expression)

算術除算演算を表す BinaryExpression を作成します。

Divide(Expression, Expression, MethodInfo)

算術除算演算を表す BinaryExpression を作成します。 実装メソッドを指定できます。

Divide(Expression, Expression)

算術除算演算を表す BinaryExpression を作成します。

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

パラメーター

left
Expression

Expression プロパティを設定するLeft

right
Expression

Expression プロパティを設定するRight

返品

BinaryExpression プロパティが NodeType と等しく、DivideプロパティとLeftプロパティが指定した値に設定されているRight

例外

left または rightnull

除算演算子は、 leftに対して定義されていません。型と right。型。

次のコード例は、最初の引数を 2 番目の引数で除算する式を作成する方法を示しています。

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

// This expression divides its first argument by its second argument.
// Both arguments must be of the same type.
Expression divideExpr = Expression.Divide(
    Expression.Constant(10.0),
    Expression.Constant(4.0)
);

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

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

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

' This expression divides its first argument by its second argument.
' Both arguments must be of the same type.
Dim divideExpr As Expression = Expression.Divide(
    Expression.Constant(10.0),
    Expression.Constant(4.0)
)

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

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

' This code example produces the following output:
'
' (10/4)
' 2.5

注釈

結果の BinaryExpression には、 Method プロパティが実装メソッドに設定されています。 Type プロパティは、ノードの型に設定されます。 ノードがリフトされると、 IsLifted プロパティと IsLiftedToNull プロパティの両方が trueされます。 それ以外の場合は、 falseConversion プロパティはnull

次の情報では、実装メソッド、ノードの種類、およびノードがリフトされるかどうかについて説明します。

メソッドの実装

次の規則は、操作の実装方法を決定します。

  • Typeまたはleftのいずれかのrightプロパティが、除算演算子をオーバーロードするユーザー定義型を表す場合、そのメソッドを表すMethodInfoは実装メソッドです。

  • それ以外の場合、もしleft.Type と right.Type が数値型の場合、実装メソッドは null です。

ノードの種類とリフトされたノードと非リフト

実装メソッドが nullされていない場合:

  • left.Typeとright.Typeが実装メソッドの対応する引数型に割り当て可能な場合、ノードは持ち上げられません。 ノードの型は、実装メソッドの戻り値の型です。

  • 次の 2 つの条件が満たされている場合、ノードはリフトされ、ノードの型は実装メソッドの戻り値の型に対応する null 許容型です。

    • left.型と right。型は両方とも、少なくとも 1 つが null 許容であり、対応する null 非許容型が実装メソッドの対応する引数型と等しい値型です。

    • 実装メソッドの返り値の型は非null許容型です。

実装メソッドが null場合:

  • left.Type と right.Type の両方が null 非許容の場合、そのノードはリフトされません。 ノードの型は、定義済みの除算演算子の結果の型です。

  • left.Type と right.Type の両方が null 許容の場合、ノードはリフトされます。 ノードの型は、定義済みの除算演算子の結果型に対応する null 許容型です。

適用対象

Divide(Expression, Expression, MethodInfo)

算術除算演算を表す BinaryExpression を作成します。 実装メソッドを指定できます。

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

パラメーター

left
Expression

Expression プロパティを等しい値に設定するLeft

right
Expression

Expression プロパティを等しい値に設定するRight

method
MethodInfo

MethodInfo プロパティを等しく設定するMethod

返品

BinaryExpressionと等しいNodeType プロパティと、指定した値に設定されたDivideLeft、およびRightプロパティを持つMethod

例外

left または rightnull

methodnull されず、それを表すメソッドは voidを返すか、 static されていない (Visual Basic ではShared )、または 2 つの引数を受け取りません。

methodnull であり、除算演算子は leftに対して定義されていません。型と right。型。

注釈

結果の BinaryExpression には、 Method プロパティが実装メソッドに設定されています。 Type プロパティは、ノードの型に設定されます。 ノードがリフトされると、 IsLifted プロパティと IsLiftedToNull プロパティの両方が trueされます。 それ以外の場合は、 falseConversion プロパティはnull

次の情報では、実装メソッド、ノードの種類、およびノードがリフトされるかどうかについて説明します。

メソッドの実装

次の規則は、操作の実装方法を決定します。

  • methodnullされず、2 つの引数を受け取る void 以外のstatic (Visual Basic のShared) メソッドを表す場合は、ノードの実装メソッドです。

  • それ以外の場合、Typeまたはleftのいずれかのright プロパティが除算演算子をオーバーロードするユーザー定義型を表す場合、そのメソッドを表すMethodInfoは実装メソッドです。

  • それ以外の場合、もしleft.Type と right.Type が数値型の場合、実装メソッドは null です。

ノードの種類とリフトされたノードと非リフト

実装メソッドが nullされていない場合:

  • left.Typeとright.Typeが実装メソッドの対応する引数型に割り当て可能な場合、ノードは持ち上げられません。 ノードの型は、実装メソッドの戻り値の型です。

  • 次の 2 つの条件が満たされている場合、ノードはリフトされ、ノードの型は実装メソッドの戻り値の型に対応する null 許容型です。

    • left.型と right。型は両方とも、少なくとも 1 つが null 許容であり、対応する null 非許容型が実装メソッドの対応する引数型と等しい値型です。

    • 実装メソッドの返り値の型は非null許容型です。

実装メソッドが null場合:

  • left.Type と right.Type の両方が null 非許容の場合、そのノードはリフトされません。 ノードの型は、定義済みの除算演算子の結果の型です。

  • left.Type と right.Type の両方が null 許容の場合、ノードはリフトされます。 ノードの型は、定義済みの除算演算子の結果型に対応する null 許容型です。

適用対象