码迷,mamicode.com
首页 > 其他好文 > 详细

LINQ

时间:2015-05-22 18:51:19      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:

基础

  • 泛型和委托

 委托定义了方法的模板,我们可以使用下面的方式定义一个具体的委托:

技术分享
1 public delegate bool Predicate(string str);
View Code

 表示我们定义的方法模板为 参数为string类型,返回值为bool;任意参数类型为string返回值类型为bool的方法均可以作为该委托的一个对象存在;

技术分享
1 public bool isOk(string str)
2         {
3             return false;
4         }
5 //使用
6 Predicate delegate1 = isOk;
View Code

   但是这样的委托具有很大的局限性,只能表示一种特定的方法模板(即具有一个输入参数为string类型,输出为bool类型的方法);结合之前的委托我们可以创造更加灵活的委托,泛型委托

技术分享
1         /// <summary>
2         /// 定义一个输入参数,返回值为bool类型的泛型委托
3         /// </summary>
4         /// <param name="t"></param>
5         /// <returns></returns>
6         public delegate bool Predicate<T>(T t);    
7 
8         //使用
9         Predicate<string> delegate1 = isOk;    
View Code

 还可以定义参数与返回值均为泛型的委托

技术分享
 1         /// <summary>
 2         /// 参数与返回值均为泛型
 3         /// </summary>
 4         /// <param name="t"></param>
 5         /// <returns></returns>
 6         public delegate TResult Predicate<in T, out TResult>(T t);
 7 
 8 
 9             //使用
10             Predicate<string> delegate1 = isOk;
11             Predicate<string,bool> delegate2 = isOk;
View Code

在LINQ中使用了大量上面定义的类型,名字叫做Func;

技术分享

  与之对应的是Action委托,区别在于Action委托是不包含返回值的;

  • 隐式类型

  使用var关键字标示饮食类型局部变量,由编译器去推断实际类型

  使用var关键字时必须对变量进行初始化,否则编译器将会报错;var只能用于局部变量,不能用在字段,属性,方法的返回值;

  使用var与使用object是不同的,比如var str = "dssdsd";str的实际类型仍然是string,可以在IDE中智能提示看到效果

技术分享技术分享

  • 匿名类型
  • 扩展方法
  • 匿名方法和Lambda表达式

 

集合

 

LINQ查询

 

LINQ

标签:

原文地址:http://www.cnblogs.com/registed/p/4522752.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!