自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

LINQ Expression tree節(jié)點

開發(fā) 后端
這里介紹LINQ Expression tree節(jié)點一般是通過System.Linq.Expression.Expression這個類上的工廠方法來創(chuàng)建的。

在向大家詳細介紹創(chuàng)建LINQ Expression tree節(jié)點之前,首先讓大家了解下節(jié)點該如何創(chuàng)建,然后全面介紹。

創(chuàng)建LINQ Expression tree節(jié)點

當(dāng)了解LINQ Expression tree的概念后,就可以來討論一下這棵樹里面的節(jié)點該如何創(chuàng)建。LINQ Expression tree節(jié)點一般是通過System.Linq.Expression.Expression這個類上的工廠方法來創(chuàng)建的。包括以下的一些方法:

  1. Add                : BinaryExpression    
  2. AddChecked         : BinaryExpression    
  3. And                : BinaryExpression    
  4. AndAlso            : BinaryExpression    
  5. ArrayIndex         : BinaryExpression    
  6. ArrayLength        : UnaryExpression    
  7. Call               : MethodCallExpression    
  8. Coalesce           : BinaryExpression    
  9. Condition          : ConditionalExpression    
  10. Constant           : ConstantExpression    
  11. Convert            : UnaryExpression    
  12. ConvertChecked     : UnaryExpression    
  13. Divide             : BinaryExpression    
  14. Equal              : BinaryExpression    
  15. ExclusiveOr        : BinaryExpression    
  16. Field              : MemberExpression    
  17. GreaterThan        : BinaryExpression    
  18. GreaterThanOrEqual : BinaryExpression    
  19. Invoke             : InvocationExpression    
  20. Lambda             : Expression<TDelegate>    
  21. LeftShift          : BinaryExpression    
  22. LessThan           : BinaryExpression    
  23. LessThanOrEqual    : BinaryExpression    
  24. ListInit           : ListInitExpression    
  25. MakeBinary         : BinaryExpression    
  26. MakeMemberAccess   : MemberExpression    
  27. MakeUnary          : UnaryExpression    
  28. MemberInit         : MemberInitExpression    
  29. Modulo             : BinaryExpression    
  30. Multiply           : BinaryExpression    
  31. MultiplyChecked    : BinaryExpression    
  32. Negate             : UnaryExpression    
  33. NegateChecked      : UnaryExpression    
  34. New                : NewExpression    
  35. NewArrayBounds     : NewArrayExpression    
  36. NewArrayInit       : NewArrayExpression    
  37. Not                : UnaryExpression    
  38. NotEqual           : BinaryExpression    
  39. Or                 : BinaryExpression    
  40. OrElse             : BinaryExpression    
  41. Parameter          : ParameterExpression    
  42. Power              : BinaryExpression    
  43. Property           : MemberExpression    
  44. PropertyOrField    : MemberExpression    
  45. Quote              : UnaryExpression    
  46. RightShift         : BinaryExpression    
  47. Subtract           : BinaryExpression    
  48. SubtractChecked    : BinaryExpression    
  49. TypeAs             : UnaryExpression    
  50. TypeIs             : TypeBinaryExpression    
  51. UnaryPlus          : UnaryExpression  

上述列表中每個名字其實對應(yīng)著一組重載,參數(shù)不同,但返回值的類型是一樣的。這些工廠方法所生成的表達式的意義應(yīng)該說還是很直觀的,就不特別介紹了。經(jīng)常跟編譯器打交道的話應(yīng)該對這些名字尤其熟悉。

這些工廠方法對應(yīng)的類的層次結(jié)構(gòu)是:

  1. System.Object  
  2. System.Linq.Expressions.Expression  
  3. System.Linq.Expressions.BinaryExpression  
  4. System.Linq.Expressions.ConditionalExpression  
  5. System.Linq.Expressions.ConstantExpression  
  6. System.Linq.Expressions.InvocationExpression  
  7. System.Linq.Expressions.LambdaExpression  
  8. System.Linq.Expressions.Expression<TDelegate> 
  9. System.Linq.Expressions.MemberExpression  
  10. System.Linq.Expressions.MethodCallExpression  
  11. System.Linq.Expressions.NewExpression  
  12. System.Linq.Expressions.NewArrayExpression  
  13. System.Linq.Expressions.MemberInitExpression  
  14. System.Linq.Expressions.ListInitExpression  
  15. System.Linq.Expressions.ParameterExpression  
  16. System.Linq.Expressions.TypeBinaryExpression  
  17. System.Linq.Expressions.UnaryExpression 

觀察可得知,LINQ Expression tree節(jié)點中的類只能用于表現(xiàn)表達式,而無法表現(xiàn)“更大”的語法結(jié)構(gòu),例如賦值表達式、一般語句等。這是LINQ v1的一個重要限制,也是為什么C# 3.0的規(guī)范里明確提到一個能賦值給Expressin<TDelegate>類型的lambda表達式的方法體只能是一個表達式,而不能是一個代碼塊——代碼塊無法通過LINQ v1里的Expression tree表示。同時也值得注意的是,LINQ Expression tree本質(zhì)上是一棵靜態(tài)類型的樹——所有節(jié)點所表示的類型都能夠在編譯時確定。

【編輯推薦】

  1. Linq結(jié)果集形狀概述
  2. Linq存儲過程返回詳解
  3. Linq調(diào)用LoadProducts方法
  4. Linq使用數(shù)據(jù)表簡單描述
  5. Linq對象引用簡單介紹
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-09-09 17:02:05

LINQ Expres

2009-09-14 15:45:28

LINQ刪除XML節(jié)點

2009-09-15 10:16:01

LINQ動態(tài)查詢

2009-09-17 13:54:26

LINQ to XML

2009-09-17 13:30:32

LINQ to XML

2010-09-03 12:46:28

CSSexpression

2009-09-09 15:44:22

Linq DataCo

2009-09-10 11:10:21

Linq Librar

2013-08-27 10:20:35

JavaLINQLinq4j

2009-09-09 15:37:27

Linq DataLo

2009-09-15 14:30:11

Linq連接

2009-09-10 13:42:47

Linq UserIn

2009-09-15 16:31:15

LINQ Custom

2009-07-14 11:03:07

Expression SketchFlowSilverlight

2009-09-14 13:44:14

Lambda ExprC# Lambda

2010-09-07 16:46:59

CSSexpression

2009-09-16 17:33:16

LINQ TO SQL

2009-09-11 11:25:35

LINQ函數(shù)集合

2009-09-09 16:21:31

Linq使用sqlme

2009-09-09 09:59:08

Linq調(diào)用LoadP
點贊
收藏

51CTO技術(shù)棧公眾號