我完全理解表達式樹的概念,但我很難找到它們有用的情況。是否有可以應用表達式樹的特定實例?或者它只是作爲代碼的傳輸機制嗎?我覺得我在這裏錯過了一些東西。謝謝!什麼是表達式樹有用的一些情況?
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. 表達式樹的ReadLine的最佳方式是什麼?
- 5. 什麼是spEL(Spring表達式語言)的一些有效用途?
- 6. 在我的情況下,URL重寫的正則表達式是什麼?
- 7. 正則表達式 - 在某些情況下不起作用
- 8. 在哪些情況下使用正則表達式更好?
- 9. Decorator模式很好地解決問題的一些情況是什麼?
- 10. 什麼是.net 4.0表達式樹的一個很好的用例?
- 11. 正則表達式用或情況
- 12. 使用表達式樹的另一種表達樹
- 13. 爲什麼bss在這種情況下有一些價值?
- 14. 什麼是數據結構中的表達式樹?
- 15. LINQ:什麼是表達式樹的語法交叉連接
- 16. 表達式樹的意義究竟是什麼?
- 17. 設置對象屬性的Linq表達式樹是什麼?
- 18. 爲什麼一些引用``x.y``的表達式改變``id(x.y)``?
- 19. 什麼是lambda表達式?
- 20. 什麼是System.Threading.CompressedStack的使用情況
- 21. 組的情況下,表達式匹配
- 22. Lambda表達式中的情況
- 23. 這些Javascript表達式(+!)做了什麼?
- 24. 什麼是'xmlhttp.setRequestHeader();'並在哪些情況下使用?
- 25. 有什麼是S表達式什麼是XPATH是用於XML的?
- 26. 正則表達式替換零在某些情況下
- 27. Reporting Services表達式在某些情況下會出錯
- 28. Java正則表達式 - 這些部分各有什麼作用?
- 29. 有條件表達式而不是循環表達式的原因是什麼?
- 30. 爲什麼這不是一個有效的正則表達式?