委托链——Delegate.Combine()

作者:追风剑情 发布于:2016-2-19 10:48 分类:C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace CombineTest
  7. {
  8. public delegate void Log(string message);
  9.  
  10. class Program
  11. {
  12. public static Log LogDelegate { get; set; }
  13.  
  14. public static Log LogDelegate1 { get; set; }
  15. public static Log LogDelegate2 { get; set; }
  16.  
  17. static void Main(string[] args)
  18. {
  19. LogDelegate1 += WriteLog1;
  20. LogDelegate1 += WriteLog2;
  21.  
  22. LogDelegate2 += WriteLog3;
  23. LogDelegate2 += WriteLog4;
  24.  
  25. //合并LogDelegate1与LogDelegate2
  26. LogDelegate = (Log)Delegate.Combine(LogDelegate1, LogDelegate2);
  27. LogDelegate("test");
  28.  
  29. //移除LogDelegate1
  30. LogDelegate = (Log)Delegate.Remove(LogDelegate, LogDelegate1);
  31. LogDelegate("test1");
  32.  
  33. Console.Read();
  34. }
  35.  
  36. private static void WriteLog1(string message)
  37. {
  38. Console.WriteLine("WriteLog1: "+message);
  39. }
  40.  
  41. private static void WriteLog2(string message)
  42. {
  43. Console.WriteLine("WriteLog2: " + message);
  44. }
  45.  
  46. private static void WriteLog3(string message)
  47. {
  48. Console.WriteLine("WriteLog3: " + message);
  49. }
  50.  
  51. private static void WriteLog4(string message)
  52. {
  53. Console.WriteLine("WriteLog4: " + message);
  54. }
  55. }
  56. }

运行结果

111111111.png

 

标签: C#

« 摇杆 | 行为树»
Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号