InvocationExpression 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示一個將代理或 lambda 表達式套用到參數表達式清單的表達式。
public ref class InvocationExpression sealed : System::Linq::Expressions::Expression, System::Linq::Expressions::IArgumentProvider
public ref class InvocationExpression sealed : System::Linq::Expressions::Expression
public sealed class InvocationExpression : System.Linq.Expressions.Expression, System.Linq.Expressions.IArgumentProvider
public sealed class InvocationExpression : System.Linq.Expressions.Expression
type InvocationExpression = class
inherit Expression
interface IArgumentProvider
type InvocationExpression = class
inherit Expression
Public NotInheritable Class InvocationExpression
Inherits Expression
Implements IArgumentProvider
Public NotInheritable Class InvocationExpression
Inherits Expression
- 繼承
- 實作
範例
以下範例建立 表示 InvocationExpression 呼叫 lambda 運算式並指定參數。
System.Linq.Expressions.Expression<Func<int, int, bool>> largeSumTest =
(num1, num2) => (num1 + num2) > 1000;
// Create an InvocationExpression that represents applying
// the arguments '539' and '281' to the lambda expression 'largeSumTest'.
System.Linq.Expressions.InvocationExpression invocationExpression =
System.Linq.Expressions.Expression.Invoke(
largeSumTest,
System.Linq.Expressions.Expression.Constant(539),
System.Linq.Expressions.Expression.Constant(281));
Console.WriteLine(invocationExpression.ToString());
// This code produces the following output:
//
// Invoke((num1, num2) => ((num1 + num2) > 1000),539,281)
Dim largeSumTest As System.Linq.Expressions.Expression(Of System.Func(Of Integer, Integer, Boolean)) = _
Function(num1, num2) (num1 + num2) > 1000
' Create an InvocationExpression that represents applying
' the arguments '539' and '281' to the lambda expression 'largeSumTest'.
Dim invocationExpression As System.Linq.Expressions.InvocationExpression = _
System.Linq.Expressions.Expression.Invoke( _
largeSumTest, _
System.Linq.Expressions.Expression.Constant(539), _
System.Linq.Expressions.Expression.Constant(281))
Console.WriteLine(invocationExpression.ToString())
' This code produces the following output:
'
' Invoke((num1, num2) => ((num1 + num2) > 1000),539,281)
備註
利用 Invoke 工廠方法來建立一個 InvocationExpression。
NodeType的 是 InvocationExpressionInvoke。
屬性
| 名稱 | Description |
|---|---|
| Arguments |
取得代理或 lambda 運算式所應用的參數。 |
| CanReduce |
表示該節點可以簡化為更簡單的節點。 若此結果為真,則可呼叫 Reduce() 以產生約簡形式。 (繼承來源 Expression) |
| Expression |
取得要套用的代理或 lambda 運算式。 |
| NodeType |
回傳此表達式的節點類型。 當覆寫此方法時,擴充節點應該會回傳 Extension 。 |
| NodeType |
取得節點 Expression類型。 (繼承來源 Expression) |
| Type |
取得此 Expression 表達式的靜態型態。 |
| Type |
取得此 Expression 表達式的靜態型態。 (繼承來源 Expression) |
方法
| 名稱 | Description |
|---|---|
| Accept(ExpressionVisitor) |
針對此節點類型的特定訪問方法進行派遣。 例如,稱為 MethodCallExpressionVisitMethodCall(MethodCallExpression)。 (繼承來源 Expression) |
| Equals(Object) |
判斷指定的物件是否等於目前的物件。 (繼承來源 Object) |
| GetHashCode() |
做為預設哈希函式。 (繼承來源 Object) |
| GetType() |
取得目前實例的 Type。 (繼承來源 Object) |
| MemberwiseClone() |
建立目前 Object的淺層複本。 (繼承來源 Object) |
| Reduce() |
將此節點簡化為更簡單的表達式。 如果 CanReduce 回傳為真,則應回傳一個有效的表達式。 此方法可返回另一個必須被約簡的節點。 (繼承來源 Expression) |
| ReduceAndCheck() |
將此節點簡化為更簡單的表達式。 如果 CanReduce 回傳為真,則應回傳一個有效的表達式。 此方法可返回另一個必須被約簡的節點。 (繼承來源 Expression) |
| ReduceExtensions() |
將表達式簡化為已知節點型別(非擴充節點),或僅回傳已是已知型別的表達式。 (繼承來源 Expression) |
| ToString() |
回傳 的文字表示 Expression。 (繼承來源 Expression) |
| Update(Expression, IEnumerable<Expression>) |
會建立一個新的表達式,類似這個,但使用提供的子節點。 如果所有子節點相同,則會回傳這個表達式。 |
| VisitChildren(ExpressionVisitor) |
將節點簡化,然後呼叫訪客代理處理簡化表達式。 若節點不可約,方法會拋出例外。 (繼承來源 Expression) |
明確介面實作
| 名稱 | Description |
|---|---|
| IArgumentProvider.ArgumentCount |
回傳給表達式樹節點的參數數量。 你不應該使用這個會員。 它之所以公開,是因為組合語言重構,並且用於內部效能優化。 |
| IArgumentProvider.GetArgument(Int32) |
回傳 在 索引 的參數,若索引超出範圍則拋棄。 你不應該使用這個會員。 它之所以公開,是因為組合語言重構,並且用於內部效能優化。 |