C#学习笔记

1、.Net Framework提供给我们灵活强大的数据操控能力。比如说,当我们需要对数据进行筛选的时候,我们想到的是“Where”子句,而不是List<T>.FindAll();当我们需要对数据进行排序的时候,我们想到的是“Order By”子句,而不是List<T>.Sort();当我们需要对数据进行分页的时候我们想到的是存储过程,而不是List<T>.GetRange()。

 

2、Lambda 表达式是一种匿名函数结构,它可以方便的实现委托、查询综合和扩展方法的 delegate 类型参数的初始化定义。

形式:

( 形参列表 ) => { 函数体 }

可以没有参数列表,如:
() => { Console.WriteLine(""); }

 

3、扩展方法将一个在特定类型上实现的方法引入到该类型上,并可利用该类型直接调用。

例如,Count() 方法可以计算元素的个数,Count() 方法可以实现在 string、数组、集合、IEnumerable< T> 上,甚至是上文中定义的 Persons 类上。为了在 string 上实现 Count(),可以使用如下代码。
using System.Runtime.CompilerServices;

public class Extensions
{
    [Extension()]
    public int Count(this string source)
    {
        int count = 0;
        foreach (var item in source)
        {
            count++;
        }
        return count;
    }

    [Extension()]
    public int Count<T>(this IEnumerable<T> source) { 
         int count = 0; 
         foreach (var item in source) {
             count++;
         } 
         return count; 
     }
}

这样,就在 IEnumerable<T> 上和 string 上都实现了Count()方法。我们可以象使用IEnumerable<T> 和 string 上的成员方法一样使用扩展方法,例如:
 string s = "Hello, World!";  
 int c1 = s.Count();  
  
 List< int> list = new List<int>() { 1, 2, 3, 4, 5, 6 };  
 int c2 = list.Count();

 

4、匿名类型常常用在查询表达式的结果中,因为这种类型的返回值往往是一个包含一种特定类型的 IEnumerable< T>。例如,要从上面的例子中选出年龄大于 21 岁,身高大于 160 厘米的 Person 集合,可以采用如下形式。

var result = from person in persons where person.Age >= 21 && person.Height >= 160 
     select new { Name = person.Name, Age = person.Age, Height = person.Height / 100 };  
  
 new { Name = person.Name, Age = person.Age, Height = person.Height / 100 } 是一个匿名类型,编译器将对它做如下声明。 
 
 public class _Anonymous_Name_Age_Height { 
     public string Name; 
     public string Age; 
     public decimal Height; 
 }

 

 5、委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值