1.lambda就是一个匿名方法
2.委托约束
3.匿名类,实际框架编译的时候自动声明了一个类,但是类的属性都是只读的,只能一次性赋值。
4.var,类型推断,编译器自动识别变量类型。只能声明局部变量。多适用于系统类型,程序员不知道的类型,比如匿名类。
5.扩展方法:静态类静态方法,静态方法第一个参数类型为要扩展的类型名称,类型名前加this。实例方法优先级高于扩展方法:如果重名,会优先调用实例方法,所以扩展方法1不能滥用,2考虑重名问题。
6.Linq:实质上就是把一个匿名泛型委托当做一个参数传入使用了,匿名泛型委托封装一个where判定的逻辑。
7.linq本质 where扩展方法的自定义实现:
public static IEnumerable<TSource> myWhere(this IEnumerable<TSource> source,Func<TSource,bool> predicate)
{
List<TSource> listRel=new List<TSource>();
foreach(var item in TSource){
if(predicate.Invoke(item)){
listRel.Add(item);
}
}
}
8.linq语法糖:
var list = from s in studentList
where s.Age<30
select s;
9.用户界面的东西,都要try catch,防止程序死掉或直接把异常抛给用户。