c#ltm笔记

委托篇
委托是一种类所以用的时候要声明和实例化
相当于函数指针的升级版,间接调用函数


8.1直接调用和间接调用


直接调用通过函数名直接找到函数所在地址执行
间接调用通过函数指针里的函数名来直接找到函数所在地址执行
委托的调用可以简化如用xx.Invoke();来调用也可以简写xx();


8.2系统自带的两种委托

委托实例的时候之所以用 Do 而不是 Do()意思是只是要这个名字也就是只要这个方法的地址(和函数指针一样都是操作地址)
Action:Action委托适用与要调用的方法没有返回值的时候

如:要委托的方法是 public void Do():
Action xx=new Action (Do);
用 xx.Invoke();来调用
Func:Func委托适用与有返回值和有参数的(没有参数也可以)返回值要在func的()里最后一个;

如要委托的方法是 public string Do(intx);

创建一个输入参数是 int 返回参数是 string的委托.
Func<int,string > xx=new Func<int,string >(Do);
用 string yx=xx.Invoke(2);来调用和接收 Do 的返回值

8.3 自定义的委托


是要委托的方法是 public Double Do(int x);
声明:public delegate 返回类型 名字(参数);

如 public delegate Double Ss(int x)

实例化:Ss ss1=new Ss(Do);

使用:ss1.Invoke(1);或者ss1(1);
回调方法和模板方法
就是把方法当成参数给另一个方法
回调方法一般没有返回值按条件来筛选使用
模板方法是有返回值的并且一定会用的
模板方法:
参考工厂例子


8.4委托的高级调用


多播:多个委托加在一起
Func<>d1,func<>d2
d1+=d2;
d1.invoke()的时候会先调用 d1 再调用 d2
隐式异步调用:
同步异步:
每个运行的程序是一个进程,一个进程可以有多个线程
同步就是从主线程开始执行到了一个方法就主线程暂停跑到方法里去执行方法执行完了再
跑会主线程继续;
异步就是一开始就有很多个线程每个线程里可以有方法这样就可以多个方法同时进行
串行=-同步==单线程;并行=-异步=-多线程;
委托里可以用 Begininvoke 来进行异步调用;do1.Begininvoke(null,null);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值