首页 > 技术文章 > net基础知识点(二)

sailing92 2020-09-06 14:13 原文

1、委托
1)委托是一种数据类型,可以声明委托数据类型
委托是一种指向方法的数据类型
2)声明委托的方式 delegate 返回值类型 委托类型名称(参数)
比如: delegate void mydel(int n)
3)注意这里除了前面的delegate以外,剩下的部分和声明一个函数是一样的,但是mydel不是函数名称,而是委托类型名称
4)如何创建一个委托类型的对象,mydel sp=new mydel(sayhello)
//sayhello需要和mydel的参数和返回值一样
sp这个委托变量就指向sayhello这个方法了。
5)简化的方法
mydel sp=sayhello;
6)委托的使用:
委托变量之间可以相互赋值,就是一个传递指向方法的过程;sp()就是调用指向的方法,如果有参数就传入参数,可以接收对应的回参

注意:
=是对委托的赋值
+=是委托的绑定
-=是委托的绑定取消

2、委托的应用
方法的规整
即在事件中,使用同一个委托的对象,不需要对修改这部分的代码。
新增的方法,可以在对象的使用方法中进行判断和新增


3、内置的泛型委托
net中内置了两个泛型的委托 Func和Action
Func 无回参
Action 有回参
均为泛型委托

4、匿名方法
匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。
在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。
delegate void NumberChanger(int n);
...
NumberChanger nc = delegate(int x)
{
Console.WriteLine("Anonymous Method: {0}", x);
};


5、lambda表达式

自己学习,比较多


6、集合常用的扩展方法
where、select、Max、Min、OrderBy
有下划线的支持委托
First:获取第一个,如果一个都没有异常
FirstOrDefault:获取第一个,如果一个都没有则返回默认值
Single:获取唯一一个,如果没有或者有多个,则异常
SingleOrDefault:获取唯一一个,如果没有则返回默认值,如果有多个则异常
Tolist
ToArray

where:
对数据按照lambda表达式中的条件进行过滤

select:
对数据按照lambda表达式进行数据的处理

数据的简单函数处理
Max、Min、Sum、Avg等等

7、事件
https://www.cnblogs.com/youMo/p/10360411.html
委托和事件的区别
https://www.cnblogs.com/darrenji/p/3967381.html

推荐阅读