当前位置:首页 > Windows程序 > 正文

C#委托delegate的一个应用实例

2024-03-31 Windows程序

委托是自定义的方法的一种类型,与声明的委托具有相同参数以及返回值类型,,即可使用委托来调用该方法

使用delegate关键字申明委托

使用委托可以降低耦合性,提高可维护性

——————————————————————————————————————————————————————————

下面是一个解耦实例:

原始写法:

public void TestOne(string name) { if (name == "A") { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法A:{0}", name); } else if (name == "B") { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法B{0}", name); } else if (name == "C") { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法C{0}", name); } }

原始代码

使用委托解耦:

public class MyDelegate { /// <summary> /// 构造函数初始化MyDic /// </summary> public MyDelegate() { MyDic.Add(MyEnum.ActionA, ActionA); MyDic.Add(MyEnum.ActionB, ActionB); MyDic.Add(MyEnum.ActionC, ActionC); } public Dictionary<MyEnum, DelegateOne> MyDic = new Dictionary<MyEnum, DelegateOne>(); public enum MyEnum { ActionA, ActionB, ActionC } //使用委托解耦,如需拓展业务,只需要增加一个方法即可 public void TestDelegateOne(string name, DelegateOne action) { action(name); } private void ActionA(string name) { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法A:{0}", name); } private void ActionB(string name) { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法B{0}", name); } private void ActionC(string name) { #region 业务逻辑 //........... #endregion Console.WriteLine("我是方法C{0}", name); } }

解耦后

调用:

MyDelegate md = new MyDelegate(); md.TestDelegateOne("解耦啦", new DelegateOne(md.MyDic[MyDelegate.MyEnum.ActionA]));

调用

标签:

原文地址:https://www.cnblogs.com/Script1/p/13278588.html

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/43523.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494595访问次数
  • 建站天数
  • 友情链接