c#讲义委托与事件深入讲解.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

委托和事件

委托根本概念委托,顾名思义,就是中间代理人的意思。通俗地说,委托是一个可以引用方法的类型,当你创立一个委托,也就创立了一个引用方法的对象,进而就可以调用那个方法,即是说委托可以调用它所指向的方法。实际委托和C++函数指针很类似,但具有更高的平安性。而且委托引用的方法可以改变,这样同一个委托就可以调用多个不同的方法。委托类型派生自.NETFramework中的Delegate类。委托类型是密封的,不能从Delegate中派生委托类型,也不可能从中派生自定义类。

C#中委托的具体的步骤是:

〔1〕声明一个委托,其参数形式一定要和想要包含的方法的参数形式一致。

〔2〕定义所有你要定义的方法,其参数形式和第一步中声明的委托对象的参数形式必须相同。

〔3〕创立委托对象并将所希望的方法包含在该委托对象中。

〔4〕通过委托对象调用包含在其中的各个方法。

步骤1:声明一个委托

格式:[修饰符]delegate返回类型委托名(参数列表);例:publicdelegatevoidMyDelegate1(stringinput);

publicdelegatedoubleMyDelegate2();声明一个委托的对象,与声明一个普通类对象的方式一样:委托名委托对象名;例:MyDelegate1a;MyDelegate2b;

步骤2:定义方法,其参数形式和步骤1中声明的委托对象的必须相同

classMyClass1{

publicvoiddMethod1(stringinput){

Console.WriteLine(“Method1传递的参数是{0},input);

}

publicvoiddMethod2(stringinput){

Console.WriteLine(Method1传递的参数是{0},input);}

}

步骤3:创立一个委托对象并将上面的方法包含其中

例:MyClass1c2=newMyClass1();MyDelegate1d1;d1=newMyDelegate1(c2.dMethod1);MyDelegate1d2=newMyDelegate1(c2.dMethod2);步骤4:通过委托对象调用包含在其中的方法

例:d1(abc);d2(123);

下面这个例子就是将上面的4个步骤合在一起:usingSystem;publicdelegatevoidMyDelegate1(stringinput);classMyClass1{publicvoiddMethod1(stringinput){Console.WriteLine(dMethod1传递的参数是{0},input);?}publicvoiddMethod2(stringinput){Console.WriteLine(dMethod2传递的参数是{0},input); } }classDriver{staticvoidMain(){MyClass1c2=newMyClass1();?MyDelegate1d1=newMyDelegate1(c2.dMethod1);?MyDelegate1d2=newMyDelegate1(c2.dMethod2);?d1(abc);d2(123);}}

泛型我们在编写程序时,经常遇到两个模块的功能非常相似,只是一个是处理int数据,另一个是处理string数据,或者其他自定义的数据类型,但我们没有方法,只能分别写多个方法处理每个数据类型,因为方法的参数类型不同。有没有一种方法,在方法中传入通用的数据类型,这样不就可以合并代码了吗?泛型的出现就是专门解决这个问题的。

泛型简介泛型是C#

文档评论(0)

199****8042 + 关注
实名认证
内容提供者

相信自己,相信明天

1亿VIP精品文档

相关文档