c#委托、lambda表达式

c#委托、lambda表达式

ID:33388973

大小:143.50 KB

页数:6页

时间:2019-02-25

c#委托、lambda表达式_第1页
c#委托、lambda表达式_第2页
c#委托、lambda表达式_第3页
c#委托、lambda表达式_第4页
c#委托、lambda表达式_第5页
资源描述:

《c#委托、lambda表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、委托、Lambda表达式1.委托2(1)委托的本质2(2)使用委托的示例2(3)委托的Invoke与BeginInvoke方法21、Invoke方法22、BeginInvoke方法23、委托的EndInvoke方法3(4)Action、Func与Predicate(泛型委托)31、Action无返回值的泛型委托32、Func带有返回值的泛型委托43、Predicate委托(常用于集合参数)4(5)多播委托4(6)使用委托定义匿名方法52.Lambda表达式5(1)Lambda表达式本质5(2)Lambda表达式使用示例5(3)Lambda表

2、达式语法61、表达式Lambda语法(参数语法)62、语句Lambda语法(函数体语法)63、类型猜测64、Lambda式中的变量作用域6作者:李志伟时间:2014-01-181.委托(1)委托的本质委托实际上就是指向函数的指针。在C#中委托是一种类型,定义一个委托就是定义一个新的类,它与类的地位是一样的,所以可以定义类的地方都可以定义委托!实际上,使用delegate关键字定义的委托继承了System.MulticastDelegate类,而System.MulticastDelegate类又继承了System.Delegate。Delegate:表示委托,委托是一种数据结

3、构,它引用静态方法或引用类实例及该类的实例方法。MulticastDelegate:表示多路广播委托;即,其调用列表中可以拥有多个元素的委托。(2)使用委托的示例delegatestringDelegateMethod(inta,intb);//定义委托classProgram{staticvoidMain(string[]args){DelegateMethoddm=newDelegateMethod(Method);//或:DelegateMethoddm=MethodConsole.WriteLine(dm(10,20));//执行委托Console.Read();}p

4、rivatestaticstringMethod(inta,intb){return"相加结果:"+(a+b);}}(3)委托的Invoke与BeginInvoke方法1、Invoke方法实际上,给委托实例提供圆括号与调用委托的Invoke方法效果完全相同:delegatestringDelegateMethod(inta,intb);//定义委托classProgram{staticvoidMain(string[]args){DelegateMethoddm=Method;Console.WriteLine(dm.Invoke(10,20));//执行委托Console.

5、Read();}privatestaticstringMethod(inta,intb){return"相加结果:"+(a+b);}}2、BeginInvoke方法调用委托实例的BeginInvoke方法就是开启一个新的线程执行委托实例指向的方法。delegatevoidDelegateMethod(inta,intb);//定义委托classProgram{staticvoidMain(string[]args){DelegateMethoddm=Method;for(inti=0;i<10;i++){dm.BeginInvoke(i,20,null,null);//异步调

6、用委托}Console.Read();}privatestaticvoidMethod(inta,intb){Console.WriteLine("相加结果:"+(a+b));//执行委托}}BeginInvoke方法有三种参数,第一种参数是委托实例指向的方法的参数(可能有多个);第二种参数的类型是AsyncCallback,AsyncCallback是一个委托类型,其定义是delegatevoidAsyncCallback(IAsyncResultar),当调用BeginInvoke方法的委托实例异步执行完成时,就会执行该参数指向的方法;第三种参数是object类型,主要是

7、向第二种参数传递一些值,一般可以传递被调用方法的委托,这个值可以使用IAsyncResult.AsyncState属性获得。(具体请参考“C#多线程”)delegatevoidDelegateMethod(inta,intb);//定义委托classProgram{staticvoidMain(string[]args){DelegateMethoddm=Method;dm.BeginInvoke(10,20,MethodCompleted,null);//异步调用委托Console.Read();}/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。