经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
委托初步了解(代码段展示)
来源:cnblogs  作者:薄荷グ微凉べ  时间:2018/10/23 9:29:04  对本文有异议

一.非含参委托

  1. using System;
  2. namespace 委托
  3. {
  4. //2 定义委托类型 委托和目标方法基本一致
  5. public delegate void DelegateEat();
  6. class Program
  7. {//1 应该有目标方法
  8. public static void ZSEat()
  9. {
  10. Console.WriteLine("张三吃饭饭--->");
  11. }
  12. public static void LSEat( )
  13. {
  14. Console.WriteLine("李四吃饭饭--->");
  15. }
  16. public static void Main(string[] args)
  17. { //3 申明委托变量
  18. DelegateEat delegateEat;
  19. //4 赋值
  20. delegateEat = ZSEat;
  21. delegateEat += LSEat;
  22. delegateEat += delegateEat;
  23. delegateEat -= LSEat;
  24. //5 执行委托
  25. delegateEat();
  26. }
  27. }
  28. }

结果:张三吃饭饭--->

  1. 李四吃饭饭--->
  1. 张三吃饭饭--->

二.含参数委托类

例一:目标函数中放一个参数

  1. using System;
  2. namespace ConsoleApplication1
  3. {
  4. public delegate void DelegateEat();//2
  5. class Program
  6. {
  7. /// 第一个参数放置符合类型的方法!!!
  8. public static void ExcDelegateEat(DelegateEat de)//1
  9. {
  10. Console.WriteLine("先执行");
  11. de();
  12. }
  13. public static void LSEat()
  14. {
  15. Console.WriteLine("赵六吃呵呵哒");
  16. }
  17. public static void Main(string[] args)
  18. {
  19. ExcDelegateEat(LSEat);
  20. }
  21. }
  22. }

结果:先执行

赵六吃呵呵哒

例二:目标函数中放两个参数

  1. using System;namespace ConsoleApplication1
  2. {
  3. public delegate void DelegateEat();//2
  4. class Program
  5. {
  6. /// 第一个参数放置符合类型的方法!!!
  7. public static void ExcDelegateEat(DelegateEat de, string userName)//1
  8. {
  9. Console.WriteLine("{0}在使用吃的功能", userName);
  10. de();
  11. }
  12. public static void LSEat()
  13. {
  14. Console.WriteLine("赵六吃呵呵哒");
  15. }
  16. public static void Main(string[] args)
  17. {
  18. ExcDelegateEat(LSEat, "李四");
  19. }
  20. }
  21. }

结果:李四在使用吃的功能

赵六吃呵呵哒

例三:目标函数和委托类型均有两个参数

  1. 1 using System;
  2. 2 namespace ConsoleApplication1
  3. 3 {
  4. 4 public delegate void DelegateEat(string x,string y);//2
  5. 5 class Program
  6. 6 {
  7. 7 public static void ExcDelegateEat(DelegateEat de, string userName)//1
  8. 8 {
  9. 9 string tr = "王五";
  10. 10 string er = "洪七";
  11. 11 Console.WriteLine("{0}在使用吃的功能", userName);
  12. 12 de(tr,er);
  13. 13 }
  14. 14 public static void LSEat(string m,string n)
  15. 15 {
  16. 16 Console.WriteLine("{0}吃呵呵哒",m);
  17. 17 Console.WriteLine("赵六吃呵呵哒");
  18. 18 Console.WriteLine("{0}吃呵呵哒",n);
  19. 19 }
  20. 20 public static void Main(string[] args)
  21. 21 {
  22. 22 ExcDelegateEat(LSEat, "李四");
  23. 23 Console.ReadKey();
  24. 24 }
  25. 25 }
  26. 26 }

结果:李四在使用吃的功能

王五吃呵呵哒

赵六吃呵呵哒

洪七吃呵呵哒

 

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号