首页 > 代码库 > 对委托的一些短浅理解
对委托的一些短浅理解
有这么一个功能,是根据不同的人来说不同的“早上好”。如果是按照以前的方法,我会这么做。
如:
#region 老办法 public static void SayHi(string name, PeopleType type) { if (type == PeopleType.chinese) { Console.WriteLine("早上好,{0}", name); } else if (type == PeopleType.american) { Console.WriteLine("Good Morning,{0}", name); } } #endregion #region 参数 public enum PeopleType { chinese = 0, american = 1 } #endregion
思考:
1、如果以后需要进行修改,还需要重新修改整个SayHi方法,有可能还会对其他地方有影响。
2、如果需要再添加一个英国版的早上好,更得需要添加很多代码,且容易对其他地方有影响。
*******************************经过改良的方法***********************
1、先声明一个带参数的委托
public delegate void SayhiHandler(string name);
然后再新建一个类,其中有如下几个方法:
public class Greeting { #region 新办法 public static void SayHi(string name, SayhiHandler sayHi) { sayHi(name); } public static void SayHiChinese(string name) { Console.WriteLine("早上好,{0}", name); } public static void SayHiAmerican(string name) { Console.WriteLine("Good Morning,{0}", name); } #endregion #region 参数 public enum PeopleType { chinese = 0, american = 1 } #endregion }
经过委托,可按如下调用
SayhiHandler sayHis = new SayhiHandler(Greeting.SayHiChinese); sayHis("张旭"); SayhiHandler sayAmrican = new SayhiHandler(Greeting.SayHiAmerican); sayAmrican("Mr.Zxu");
************************************优点*********************************
如果再解决以上的那个问题,只需要再添加一个如SayHiAmerican的方法即可。
对委托的一些短浅理解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。