我完全理解表達式樹的概念,但我很難找到它們有用的情況。是否有可以應用表達式樹的特定實例?或者它只是作爲代碼的傳輸機制嗎?我覺得我在這裏錯過了一些東西。謝謝!什麼是表達式樹有用的一些情況?
11
A
回答
6
或者它只是作爲傳輸機制代碼有用嗎?
對於代碼,它作爲執行機制很有用。使用interpreter pattern,可以直接解釋表達式樹。這很有用,因爲它實現起來非常簡單快捷。這種解釋器無處不在,甚至在似乎沒有「解釋」任何東西的情況下也是如此,例如用於打印嵌套結構。
6
一些單元測試模擬框架利用表達式樹來建立強類型的期望/驗證。即:
myMock.Verify(m => m.SomeMethod(someObject)); // tells moq to verify that the method
// SomeMethod was called with
// someObject as the argument
這裏,表達式從來沒有實際執行,但表達式本身保存有趣的信息。無表達式樹的替代辦法是
myMock.Verify("SomeMethod", someObject) // we've lost the strong typing
4
當您需要訪問函數邏輯以便以某種方式更改或重新應用它時,表達式樹很有用。
LINQ到SQL是一個很好的例子:
//a linq to sql statement
var recs (
from rec in LinqDataContext.Table
where rec.IntField > 5
select rec);
如果我們沒有表達式樹本聲明將不得不返回所有的記錄,然後應用C#,其中的邏輯每個。
隨着表達式樹該where rec.IntField > 5
可以被解析成SQL:
--SQL statment executed
select *
from [table]
where [table].[IntField] > 5
相關問題
- 1. 正則表達式匹配的表達只有這些情況
- 2. 這種情況的正則表達式是什麼?
- 3. 這種情況的正則表達式會是什麼?
- 4. 是什麼,這些正則表達式
- 5. 什麼是正則表達式這些
- 6. 在這種情況下正則表達式的正確使用是什麼?
- 7. 何時以及在何種情況下使用表達式樹
- 8. 表達式樹的ReadLine的最佳方式是什麼?
- 9. 什麼是spEL(Spring表達式語言)的一些有效用途?
- 10. 什麼是一些JavaScript表達式的等效GWT/Java語法?
- 11. 在我的情況下,URL重寫的正則表達式是什麼?
- 12. 正則表達式 - 在某些情況下不起作用
- 13. 在哪些情況下使用正則表達式更好?
- 14. Decorator模式很好地解決問題的一些情況是什麼?
- 15. 什麼是.net 4.0表達式樹的一個很好的用例?
- 16. 正則表達式用或情況
- 17. 爲什麼bss在這種情況下有一些價值?
- 18. 使用表達式樹的另一種表達樹
- 19. 表達式樹的意義究竟是什麼?
- 20. 什麼是數據結構中的表達式樹?
- 21. LINQ:什麼是表達式樹的語法交叉連接
- 22. 設置對象屬性的Linq表達式樹是什麼?
- 23. ASP.NET MVC 5中表達式樹的優點是什麼@ Html.DisplayFor
- 24. 爲什麼一些引用``x.y``的表達式改變``id(x.y)``?
- 25. 什麼是lambda表達式?
- 26. 什麼是System.Threading.CompressedStack的使用情況
- 27. 組的情況下,表達式匹配
- 28. IP正則表達式的情況下
- 29. JavaScript正則表達式的情況下
- 30. Lambda表達式中的情況