メソッドの実装Implementing Method

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

いずれかexpression。型またtypeはが暗黙的または明示的な変換演算子MethodInfoを定義するユーザー定義型であるか、その演算子を表すが実装メソッドであることを示します。If either expression.Type or type is a user-defined type that defines an implicit or explicit conversion operator, the MethodInfo that represents that operator is the implementing method.

いずれかexpression。型またtypeはが参照型で、明示的なボックス化、ボックス化解除、 expressionまたは参照変換がから存在します。「」 typeと入力すると、 null実装するメソッドはになります。If either expression.Type or type is a reference type and an explicit boxing, unboxing, or reference conversion exists from expression.Type to type, the implementing method is null.

リフトと非リフトLifted versus Non-Lifted

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

のexpression場合。型は、実装するメソッドの引数の型に割り当て可能であり、実装するメソッドの戻り値typeの型はに割り当て可能で、ノードはリフトされていません。If expression.Type is assignable to the argument type of the implementing method and the return type of the implementing method is assignable to type, the node is not lifted.

の一方または両方expressionがの場合。型またtypeはが null 許容の値型であり、対応する null 非許容の値型が引数の型および実装するメソッドの戻り値の型と等しい場合、ノードはリフトされます。If one or both of expression.Type or type is a nullable value type and the corresponding non-nullable value types are equal to the argument type and the return type of the implementing method respectively, the node is lifted.

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

両方expressionの場合。型とtypeは null 非許容で、ノードはリフトされていません。If both expression.Type and type are non-nullable, the node is not lifted.

例外

method は null ではなく、それが表すメソッドは void を返し、static (Visual Basic では Shared) ではないか、受け取る引数が 1 つだけではありません。method is not null and the method it represents returns void, is not static (Shared in Visual Basic), or does not take exactly one argument.

メソッドの実装Implementing Method

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

メソッドがでないnull場合は、実装メソッドです。If method is not null, it is the implementing method.これは、1つの引数をstatic受け取るShared void 以外の (Visual Basic) メソッドを表す必要があります。It must represent a non-void, static (Shared in Visual Basic) method that takes one argument.

それ以外の場合expressionは。型またtypeはが暗黙的または明示的な変換演算子MethodInfoを定義するユーザー定義型であるか、その演算子を表すが実装メソッドであることを示します。Otherwise, if either expression.Type or type is a user-defined type that defines an implicit or explicit conversion operator, the MethodInfo that represents that operator is the implementing method.

いずれかexpression。型またtypeはが参照型で、明示的なボックス化、ボックス化解除、 expressionまたは参照変換がから存在します。「」 typeと入力すると、 null実装するメソッドはになります。If either expression.Type or type is a reference type and an explicit boxing, unboxing, or reference conversion exists from expression.Type to type, the implementing method is null.

リフトと非リフトLifted versus Non-Lifted

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

のexpression場合。型は、実装するメソッドの引数の型に割り当て可能であり、実装するメソッドの戻り値typeの型はに割り当て可能で、ノードはリフトされていません。If expression.Type is assignable to the argument type of the implementing method and the return type of the implementing method is assignable to type, the node is not lifted.

のいずれかまたはexpression両方の場合。型またtypeはが null 許容の値型であり、対応する null 非許容の値型が引数の型と、実装するメソッドの戻り値の型がそれぞれ同じである場合、ノードはリフトされます。If either or both of expression.Type or type are a nullable value type and the corresponding non-nullable value types are equal to the argument type and the return type of the implementing method respectively, the node is lifted.

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

両方expressionの場合。型とtypeは null 非許容で、ノードはリフトされていません。If both expression.Type and type are non-nullable, the node is not lifted.