LINQ需要用到:

  1. 隐式类型
    1.  var关键字
  2. 匿名类型
    1. 每个属性的类型由编译器推断。
  3. 初始化器
    1. 使用对象初始化器,可以在创建时直接向对象赋值,无需显示的调用对象的构造函数。
  4. 委托
    1. 委托是将方法作为参数传递。
  5. 泛型
    1. 类型参数,使用参数类型的这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。
  6. 泛型委托 
    1. 重点
  7. 匿名方法
    1. 这对于 Lambda 表达式来说是不可能的。
  8. lambda表达式
  9. 扩展方法

--------------------------------------------------

 Ex:

LINQ中 where扩展方法定义:

 

LINQ学习

定义了:

泛型类型  <TSource>    

返回值类型  IEnumerable<TSource>

扩展类型  this IEnumerable<TSource> source

委托参数  Func<TSource, bool> predicate,委托定义如下:

LINQ学习

其中 in out 关键字是告诉编译器,形参和返回值支持协变和逆变(评论区)。

只有泛型接口、委托类型才是逆变/协变的,实参只能是引用类型

相关文章: