Expression.Convert Expression.Convert Expression.Convert Method

定義

型変換操作を表す UnaryExpression を作成します。Creates a UnaryExpression that represents a type conversion operation.

オーバーロード

Convert(Expression, Type) Convert(Expression, Type) Convert(Expression, Type)

型変換操作を表す UnaryExpression を作成します。Creates a UnaryExpression that represents a type conversion operation.

Convert(Expression, Type, MethodInfo) Convert(Expression, Type, MethodInfo) Convert(Expression, Type, MethodInfo)

実装メソッドが指定される変換演算を表す UnaryExpression を作成します。Creates a UnaryExpression that represents a conversion operation for which the implementing method is specified.

Convert(Expression, Type) Convert(Expression, Type) Convert(Expression, Type)

型変換操作を表す UnaryExpression を作成します。Creates a UnaryExpression that represents a type conversion operation.

public:
 static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type);
static member Convert : System.Linq.Expressions.Expression * Type -> System.Linq.Expressions.UnaryExpression

パラメーター

expression
Expression Expression Expression

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

type
Type Type Type

Type プロパティを等しく設定する TypeA Type to set the Type property equal to.

戻り値

UnaryExpression と等しい NodeType プロパティと、指定した値に設定された Convert プロパティおよび Operand プロパティを含む TypeA UnaryExpression that has the NodeType property equal to Convert and the Operand and Type properties set to the specified values.

例外

expression または typenull です。expression or type is null.

expression.Type と type の間には変換演算子が定義されていません。No conversion operator is defined between expression.Type and type.

次のコード例では、型変換操作を表す式を作成する方法を示します。The following code example shows how to create an expression that represents a type conversion operation.

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

// This expression represents a type conversion operation. 
Expression convertExpr = Expression.Convert(
                            Expression.Constant(5.5),
                            typeof(Int16)
                        );

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

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

// This code example produces the following output:
//
// Convert(5.5)
// 5

' Add the following directive to your file:
' Imports System.Linq.Expressions 

' This expression represents a type conversion operation.        
Dim convertExpr As Expression = Expression.Convert(
                            Expression.Constant(5.5),
                            GetType(Int16)
                        )

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

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

' This code example produces the following output:
'
' Convert(5.5)
' 5

注釈

MethodプロパティUnaryExpressionメソッドの実装に設定されます。The Method property of the resulting UnaryExpression is set to the implementing method. IsLiftedToNull プロパティが false である。The IsLiftedToNull property is false. ノードを無効になった場合IsLiftedtrueします。If the node is lifted, IsLifted is true. それ以外の場合は false です。Otherwise, it is false.

メソッドを実装します。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.

  • それ以外の場合:Otherwise:

    • 両方expressionします。型とtype数値またはブール値の型、または null 許容または null 非許容の列挙型を表すが、メソッドの実装はnullします。If both expression.Type and type represent numeric or Boolean types, or nullable or non-nullable enumeration types, the implementing method is null.

    • いずれか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.

  • 1 つまたは両方の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.

  • それ以外の場合、ノードがリフトされました。Otherwise the node is lifted.

Convert(Expression, Type, MethodInfo) Convert(Expression, Type, MethodInfo) Convert(Expression, Type, MethodInfo)

実装メソッドが指定される変換演算を表す UnaryExpression を作成します。Creates a UnaryExpression that represents a conversion operation for which the implementing method is specified.

public:
 static System::Linq::Expressions::UnaryExpression ^ Convert(System::Linq::Expressions::Expression ^ expression, Type ^ type, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.UnaryExpression Convert (System.Linq.Expressions.Expression expression, Type type, System.Reflection.MethodInfo method);
static member Convert : System.Linq.Expressions.Expression * Type * System.Reflection.MethodInfo -> System.Linq.Expressions.UnaryExpression

パラメーター

expression
Expression Expression Expression

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

type
Type Type Type

Type プロパティを等しく設定する TypeA Type to set the Type property equal to.

method
MethodInfo MethodInfo MethodInfo

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

戻り値

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

例外

expression または typenull です。expression or type is null.

methodnull ではなく、それが表すメソッドは 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.

expression.Type と type の間には変換演算子が定義されていません。No conversion operator is defined between expression.Type and type.

または-or- expression.Type は、method によって表されるメソッドの引数型に代入できません。expression.Type is not assignable to the argument type of the method represented by method.

または-or- method によって表されるメソッドの戻り値の型は、type に代入できません。The return type of the method represented by method is not assignable to type.

または-or- expression.Type または type は null 許容値型で、対応する null 非許容値型は method によって表されるメソッドそれぞれの、引数型または戻り値の型と等しくありません。expression.Type or type is a nullable value type and the corresponding non-nullable value type does not equal the argument type or the return type, respectively, of the method represented by method.

method 記述に一致する複数のメソッドが見つかりました。More than one method that matches the method description was found.

注釈

MethodプロパティUnaryExpressionメソッドの実装に設定されます。The Method property of the resulting UnaryExpression is set to the implementing method. IsLiftedToNull プロパティが false である。The IsLiftedToNull property is false. ノードを無効になった場合IsLiftedtrueします。If the node is lifted, IsLifted is true. それ以外の場合は false です。Otherwise, it is false.

メソッドを実装します。Implementing Method

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

  • メソッドがない場合nullメソッドの実装になります。If method is not null, it is the implementing method. Void、以外を表す必要がありますstatic(Shared Visual basic) を 1 つの引数を受け取るメソッド。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.

  • それ以外の場合:Otherwise:

    • 両方expressionします。型とtype数値またはブール値の型、または null 許容または null 非許容の列挙型を表すが、メソッドの実装はnullします。If both expression.Type and type represent numeric or Boolean types, or nullable or non-nullable enumeration types, the implementing method is null.

    • いずれか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します。型またはtypenull 許容値型と対応する 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.

  • それ以外の場合、ノードがリフトされました。Otherwise the node is lifted.

適用対象