InvocationExpression 類別

定義

表示一個將代理或 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
實作

範例

以下範例建立 表示 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)

回傳 在 索引 的參數,若索引超出範圍則拋棄。 你不應該使用這個會員。 它之所以公開,是因為組合語言重構,並且用於內部效能優化。

適用於