次の方法で共有


System.Linq.Expressions.Expression.Add メソッド

この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。

このメソッドは AddBinaryExpression プロパティが実装メソッドに Method 設定されている a を返します。 この Type プロパティはノードの型に設定されます。 ノードがリフトされた場合、 IsLifted プロパティと IsLiftedToNull プロパティは両方とも true. それ以外の場合は false. Conversion プロパティが null です。

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

メソッドの実装

次の規則によって、選択した操作の実装方法が決まります。

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

ノードの種類とリフトされたノードとリフトされていないノード

実装メソッドが次ではない null場合:

  • If left.型と right.型は実装メソッドの対応する引数型に割り当て可能であり、ノードはリフトされません。 ノードの型は、実装メソッドの戻り値の型です。

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

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

実装方法が次の場合:null

  • If left.型と right.型はどちらも null 非許容であり、ノードはリフトされません。 ノードの型は、定義済みの加算演算子の結果の型です。
  • If left.型と right.型はどちらも null 許容であり、ノードはリフトされます。 ノードの型は、定義済みの加算演算子の結果型に対応する null 許容型です。