Bagikan melalui


Expression.Convert Metode

Definisi

UnaryExpression Membuat yang mewakili operasi konversi jenis.

Overload

Convert(Expression, Type)

UnaryExpression Membuat yang mewakili operasi konversi jenis.

Convert(Expression, Type, MethodInfo)

UnaryExpression Membuat yang mewakili operasi konversi yang metode penerapannya ditentukan.

Convert(Expression, Type)

Sumber:
UnaryExpression.cs
Sumber:
UnaryExpression.cs
Sumber:
UnaryExpression.cs

UnaryExpression Membuat yang mewakili operasi konversi jenis.

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

Parameter

expression
Expression

Untuk Expression mengatur properti yang Operand sama dengan.

type
Type

A Type untuk mengatur properti yang Type sama dengan.

Mengembalikan

UnaryExpression yang memiliki NodeType properti yang sama dengan Convert dan Operand properti dan Type diatur ke nilai yang ditentukan.

Pengecualian

expression atau type adalah null.

Tidak ada operator konversi yang didefinisikan antara expression. Ketik dan type.

Contoh

Contoh kode berikut menunjukkan cara membuat ekspresi yang mewakili operasi konversi jenis.

// 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

Keterangan

Method Properti dari hasil UnaryExpression diatur ke metode penerapan. Properti IsLiftedToNull adalah false. Jika simpul diangkat, IsLifted adalah true. Jika tidak, ini adalah false.

Metode Penerapan

Aturan berikut menentukan metode penerapan untuk operasi:

  • Jika salah satu expression. Ketik atau type adalah jenis yang ditentukan pengguna yang menentukan operator konversi implisit atau eksplisit, MethodInfo yang mewakili operator tersebut adalah metode penerapan.

  • Sebaliknya:

    • Jika keduanya expression. Ketik dan type mewakili jenis numerik atau Boolean, atau jenis enumerasi nullable atau non-nullable, metode penerapannya adalah null.

    • Jika salah satu expression. Ketik atau type adalah jenis referensi dan tinju eksplisit, pembukaan kotak, atau konversi referensi ada dari expression. Ketik ke type, metode penerapannya adalah null.

Diangkat versus Tidak Diangkat

Jika metode penerapan bukan null:

  • Jika expression. Jenis dapat ditetapkan ke jenis argumen metode penerapan dan jenis pengembalian metode penerapan dapat ditetapkan ke type, simpul tidak diangkat.

  • Jika salah satu atau kedua dari expression. Jenis atau type adalah jenis nilai nullable dan jenis nilai yang tidak dapat diubah ke null yang sesuai sama dengan jenis argumen dan jenis pengembalian dari metode penerapan masing-masing, simpul diangkat.

Jika metode penerapan adalah null:

  • Jika keduanya expression. Ketik dan type tidak dapat diubah ke null, simpul tidak diangkat.

  • Jika tidak, simpul akan diangkat.

Berlaku untuk

Convert(Expression, Type, MethodInfo)

Sumber:
UnaryExpression.cs
Sumber:
UnaryExpression.cs
Sumber:
UnaryExpression.cs

UnaryExpression Membuat yang mewakili operasi konversi yang metode penerapannya ditentukan.

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

Parameter

expression
Expression

Untuk Expression mengatur properti yang Operand sama dengan.

type
Type

A Type untuk mengatur properti yang Type sama dengan.

method
MethodInfo

A MethodInfo untuk mengatur properti yang Method sama dengan.

Mengembalikan

UnaryExpression yang memiliki NodeType properti yang sama dengan Convert dan Operandproperti , , Typedan Method diatur ke nilai yang ditentukan.

Pengecualian

expression atau type adalah null.

method bukan null dan metode yang diwakilinya mengembalikan void, bukan static (Shared dalam Visual Basic), atau tidak mengambil satu argumen.

Tidak ada operator konversi yang didefinisikan antara expression. Ketik dan type.

-atau-

expression. Tipe tidak dapat ditetapkan ke jenis argumen metode yang diwakili oleh method.

-atau-

Jenis pengembalian metode yang diwakili oleh method tidak dapat ditetapkan ke type.

-atau-

expression. Jenis atau type adalah jenis nilai nullable dan jenis nilai yang tidak dapat diubah ke null yang sesuai tidak sama dengan jenis argumen atau jenis pengembalian, masing-masing, dari metode yang diwakili oleh method.

Lebih dari satu metode yang cocok dengan method deskripsi ditemukan.

Keterangan

Method Properti dari hasil UnaryExpression diatur ke metode penerapan. Properti IsLiftedToNull adalah false. Jika simpul diangkat, IsLifted adalah true. Jika tidak, ini adalah false.

Metode Penerapan

Aturan berikut menentukan metode penerapan untuk operasi:

  • Jika metode tidak null, itu adalah metode penerapan. Ini harus mewakili metode non-void, static (Shared dalam Visual Basic) yang mengambil satu argumen.

  • Jika tidak, jika salah satu expressiondari . Ketik atau type adalah jenis yang ditentukan pengguna yang menentukan operator konversi implisit atau eksplisit, MethodInfo yang mewakili operator tersebut adalah metode penerapan.

  • Sebaliknya:

    • Jika keduanya expression. Ketik dan type mewakili jenis numerik atau Boolean, atau jenis enumerasi nullable atau non-nullable, metode penerapannya adalah null.

    • Jika salah satu expression. Ketik atau type adalah jenis referensi dan tinju eksplisit, pembukaan kotak, atau konversi referensi ada dari expression. Ketik ke type, metode penerapannya adalah null.

Diangkat versus Tidak Diangkat

Jika metode penerapan bukan null:

  • Jika expression. Jenis dapat ditetapkan ke jenis argumen metode penerapan dan jenis pengembalian metode penerapan dapat ditetapkan ke type, simpul tidak diangkat.

  • Jika salah satu atau kedua dari expression. Jenis atau type adalah jenis nilai nullable dan jenis nilai yang tidak dapat diubah ke null yang sesuai sama dengan jenis argumen dan jenis pengembalian dari metode penerapan masing-masing, simpul diangkat.

Jika metode penerapan adalah null:

  • Jika keduanya expression. Ketik dan type tidak dapat diubah ke null, simpul tidak diangkat.

  • Jika tidak, simpul akan diangkat.

Berlaku untuk