LoopExpression Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili perulangan tak terbatas. Ini dapat keluar dengan "break".
public ref class LoopExpression sealed : System::Linq::Expressions::Expression
public sealed class LoopExpression : System.Linq.Expressions.Expression
type LoopExpression = class
inherit Expression
Public NotInheritable Class LoopExpression
Inherits Expression
- Warisan
Contoh
Contoh berikut menunjukkan cara membuat ekspresi blok yang berisi LoopExpression objek dengan menggunakan Loop metode .
// Add the following directive to the file:
// using System.Linq.Expressions;
// Creating a parameter expression.
ParameterExpression value = Expression.Parameter(typeof(int), "value");
// Creating an expression to hold a local variable.
ParameterExpression result = Expression.Parameter(typeof(int), "result");
// Creating a label to jump to from a loop.
LabelTarget label = Expression.Label(typeof(int));
// Creating a method body.
BlockExpression block = Expression.Block(
new[] { result },
Expression.Assign(result, Expression.Constant(1)),
Expression.Loop(
Expression.IfThenElse(
Expression.GreaterThan(value, Expression.Constant(1)),
Expression.MultiplyAssign(result,
Expression.PostDecrementAssign(value)),
Expression.Break(label, result)
),
label
)
);
// Compile and run an expression tree.
int factorial = Expression.Lambda<Func<int, int>>(block, value).Compile()(5);
Console.WriteLine(factorial);
// This code example produces the following output:
//
// 120
' Add the following directive to the file:
' Imports System.Linq.Expressions
' Creating a parameter expression.
Dim value As ParameterExpression =
Expression.Parameter(GetType(Integer), "value")
' Creating an expression to hold a local variable.
Dim result As ParameterExpression =
Expression.Parameter(GetType(Integer), "result")
' Creating a label to jump to from a loop.
Dim label As LabelTarget = Expression.Label(GetType(Integer))
' Creating a method body.
Dim block As BlockExpression = Expression.Block(
New ParameterExpression() {result},
Expression.Assign(result, Expression.Constant(1)),
Expression.Loop(
Expression.IfThenElse(
Expression.GreaterThan(value, Expression.Constant(1)),
Expression.MultiplyAssign(result,
Expression.PostDecrementAssign(value)),
Expression.Break(label, result)
),
label
)
)
' Compile an expression tree and return a delegate.
Dim factorial As Integer =
Expression.Lambda(Of Func(Of Integer, Integer))(block, value).Compile()(5)
Console.WriteLine(factorial)
' This code example produces the following output:
'
' 120
Properti
Body |
Expression Mendapatkan yang adalah isi perulangan. |
BreakLabel |
LabelTarget Mendapatkan yang digunakan oleh isi perulangan sebagai target pernyataan jeda. |
CanReduce |
Menunjukkan bahwa simpul dapat dikurangi menjadi simpul yang lebih sederhana. Jika ini mengembalikan true, Reduce() dapat dipanggil untuk menghasilkan formulir yang dikurangi. (Diperoleh dari Expression) |
ContinueLabel |
LabelTarget Mendapatkan yang digunakan oleh isi perulangan sebagai target pernyataan lanjutan. |
NodeType |
Mengembalikan jenis simpul ekspresi ini. Simpul ekstensi harus kembali Extension saat mengambil alih metode ini. |
Type |
Mendapatkan jenis statis ekspresi yang diwakili ini Expression . |
Metode
Accept(ExpressionVisitor) |
Dikirim ke metode kunjungan tertentu untuk jenis node ini. Misalnya, MethodCallExpression memanggil VisitMethodCall(MethodCallExpression). (Diperoleh dari Expression) |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
Reduce() |
Mengurangi simpul ini menjadi ekspresi yang lebih sederhana. Jika CanReduce mengembalikan true, ini akan mengembalikan ekspresi yang valid. Metode ini dapat mengembalikan simpul lain yang harus dikurangi. (Diperoleh dari Expression) |
ReduceAndCheck() |
Mengurangi simpul ini menjadi ekspresi yang lebih sederhana. Jika CanReduce mengembalikan true, ini akan mengembalikan ekspresi yang valid. Metode ini dapat mengembalikan simpul lain yang harus dikurangi. (Diperoleh dari Expression) |
ReduceExtensions() |
Mengurangi ekspresi ke jenis node yang diketahui (yang bukan node Ekstensi) atau hanya mengembalikan ekspresi jika sudah menjadi jenis yang diketahui. (Diperoleh dari Expression) |
ToString() |
Mengembalikan representasi tekstual dari Expression. (Diperoleh dari Expression) |
Update(LabelTarget, LabelTarget, Expression) |
Membuat ekspresi baru yang seperti ini, tetapi menggunakan anak-anak yang disediakan. Jika semua anak sama, itu akan mengembalikan ekspresi ini. |
VisitChildren(ExpressionVisitor) |
Mengurangi simpul lalu memanggil delegasi pengunjung pada ekspresi yang dikurangi. Metode ini memberikan pengecualian jika node tidak dapat dikurangi. (Diperoleh dari Expression) |