簡體   English   中英

如何使用表達式樹類型

[英]How To Use An Expression Tree Type

關於Lamba表達式的MSDN文檔提供了有關如何創建表達式樹類型的示例,但未顯示如何使用它:

using System.Linq.Expressions;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Expression<del> myET = x => x * x;
        }
    }
}

您能否完成此控制台應用程序代碼,以使其實際演示該概念?

通常,表達式樹包含兩個部分。 一組參數和一個主體。 您的示例中僅顯示一個參數,即x ,並且主體將其自身乘以該參數。

本質上,行為設置是這樣的:

public int myET(int x)
{
    return x * x;
}

但是,為了訪問該行為,必須訪問Expression的值。 該值是一個委托,可以通過使用.Compile()編譯表達式來訪問。 它的類型將是一個帶有del委托的類型參數的Func ,該參數將返回int並接受int

delegate int del(int i);
static void Main(string[] args)
{
    Expression<del> myET = x => x * x;
    del myFunc = myET.Compile();
}

編譯后,就可以像上面顯示的方法一樣調用該函數,其行為為:將參數的值發送進去,並返回主體中代碼的結果。

delegate int del(int i);
static void Main(string[] args)
{
    Expression<del> myET = x => x * x;
    del myFunc = myET.Compile();
    int fiveSquared = myFunc(5);
    Console.WriteLine(fiveSquared);//25
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM