Expression.Convert メソッド

定義

型変換操作を表す UnaryExpression を作成します。

オーバーロード

Convert(Expression, Type)

型変換操作を表す UnaryExpression を作成します。

Convert(Expression, Type, MethodInfo)

実装メソッドが指定される変換演算を表す UnaryExpression を作成します。

Convert(Expression, Type)

ソース:
UnaryExpression.cs
ソース:
UnaryExpression.cs
ソース:
UnaryExpression.cs

型変換操作を表す UnaryExpression を作成します。

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
Public Shared Function Convert (expression As Expression, type As Type) As UnaryExpression

パラメーター

expression
Expression

Expression プロパティを等しく設定する Operand

type
Type

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

戻り値

UnaryExpression と等しい NodeType プロパティと、指定した値に設定された Convert プロパティおよび Operand プロパティを含む Type

例外

expression または typenull です。

expression.Type と type の間には変換演算子が定義されていません。

次のコード例は、型変換操作を表す式を作成する方法を示しています。

// 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の の プロパティは、実装メソッドに設定されます。 IsLiftedToNull プロパティが false です。 ノードがリフトされている場合、 IsLifted は です true。 それ以外の場合は、false となります。

メソッドの実装

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

  • どちらかの expression場合。型または type は、暗黙的または明示的な変換演算子 MethodInfo を定義するユーザー定義型です。その演算子を表す は実装メソッドです。

  • それ以外の場合:

    • 両方が expressionの場合。型と type は、数値型またはブール型、または null 許容型または null 非許容列挙型を表します。実装メソッドは です null

    • どちらかの expression場合。型または type は参照型であり、 から expression明示的なボックス化、ボックス化解除、または参照変換が存在します。を に type入力します。実装メソッドは です null

リフトと非リフト

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

  • の場合 expression。型は実装メソッドの引数型に代入可能であり、実装メソッドの戻り値の型は に type割り当て可能です。ノードはリフトされません。

  • の一方または両方の expression場合。型または type が null 許容値型であり、対応する null 非許容値型はそれぞれ、実装メソッドの引数型と戻り値の型と等しく、ノードがリフトされます。

実装メソッドが の場合:null

  • 両方が expressionの場合。型 と type は null 非許容であり、ノードはリフトされません。

  • それ以外の場合、ノードはリフトされます。

適用対象

Convert(Expression, Type, MethodInfo)

ソース:
UnaryExpression.cs
ソース:
UnaryExpression.cs
ソース:
UnaryExpression.cs

実装メソッドが指定される変換演算を表す UnaryExpression を作成します。

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);
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
Public Shared Function Convert (expression As Expression, type As Type, method As MethodInfo) As UnaryExpression

パラメーター

expression
Expression

Expression プロパティを等しく設定する Operand

type
Type

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

method
MethodInfo

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

戻り値

UnaryExpression と等しい NodeType プロパティと、指定した値に設定された ConvertOperand、および Type の各プロパティを含む Method

例外

expression または typenull です。

methodnull ではなく、それが表すメソッドは void を返し、static (Visual Basic では Shared) ではないか、受け取る引数が 1 つだけではありません。

expression.Type と type の間には変換演算子が定義されていません。

- または -

expression.Type は、method によって表されるメソッドの引数型に代入できません。

- または -

method によって表されるメソッドの戻り値の型は、type に代入できません。

- または -

expression.Type または type は null 許容値型で、対応する null 非許容値型は method によって表されるメソッドそれぞれの、引数型または戻り値の型と等しくありません。

method 記述に一致する複数のメソッドが見つかりました。

注釈

Method結果UnaryExpressionの の プロパティは、実装メソッドに設定されます。 IsLiftedToNull プロパティが false です。 ノードがリフトされている場合、 IsLifted は です true。 それ以外の場合は、false となります。

メソッドの実装

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

  • メソッドが でない null場合は、実装メソッドです。 1 つの引数を受け取る void static 以外の (Shared Visual Basic では) メソッドを表す必要があります。

  • それ以外の場合 expressionは 。型または type は、暗黙的または明示的な変換演算子 MethodInfo を定義するユーザー定義型です。その演算子を表す は実装メソッドです。

  • それ以外の場合:

    • 両方が expressionの場合。型と type は、数値型またはブール型、または null 許容型または null 非許容列挙型を表します。実装メソッドは です null

    • どちらかの expression場合。型または type は参照型であり、 から expression明示的なボックス化、ボックス化解除、または参照変換が存在します。を に type入力します。実装メソッドは です null

リフトと非リフト

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

  • の場合 expression。型は実装メソッドの引数型に代入可能であり、実装メソッドの戻り値の型は に type割り当て可能です。ノードはリフトされません。

  • のいずれかまたは両方の expression場合。型または type は null 許容値型であり、対応する null 非許容値型はそれぞれ、実装メソッドの引数型と戻り値の型と等しく、ノードはリフトされます。

実装メソッドが の場合:null

  • 両方が expressionの場合。型 と type は null 非許容であり、ノードはリフトされません。

  • それ以外の場合、ノードはリフトされます。

適用対象