这个提问方式特别啊
委托很有用,可以把方法作为参数传递给另一个方法,不知道你用没用过js的回调函数,大概一个意思。java里没委托,动不动就要传个接口的实现类,代码一大堆。说了这么多,估计你还是不动。简单举个例子(非原创的例子)大概说明一下。比如下面的打招呼,中国人说中文,英国人说英文,在定义方法的时候,我不知道你是中国人还是英国人,为了避免出现下面这样的代码
if(你是英国人){
说英文
}else if(你是中国人){
说中文
}
,为什么要避免,因为又来了个日本人,那岂不是又要加个else if(你是日本人),所以我索性定义个委托,交给调方法的人决定打招呼的方式。这样灵活性就好多了。
//定义委托,它定义了可以代表的方法的类型 public delegate void GreetingDelegate(string name); private static void EnglishGreeting(string name) { Console.WriteLine("Morning, " + name); } private static void ChineseGreeting(string name) { Console.WriteLine("早上好, " + name); } //注意此方法,它接受一个GreetingDelegate类型的方法作为参数 private static void GreetPeople(string name, GreetingDelegate MakeGreeting) { MakeGreeting(name); } static void Main(string[] args) { GreetPeople("Jimmy Zhang", EnglishGreeting); GreetPeople("张子阳", ChineseGreeting); Console.ReadKey(); }
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
红色部分的这2个单词是什么关系?
@绿绿山水: GreetingDelegate 这个是类型,就和string、int一样。MakeGreeting这个是参数,和前面的name一样。
@gnib: 谢谢你,你真好。我为你点赞。
你多少得给点豆啊
愿意回答你的始终是会好好的回答,不愿意回答的,给多少豆也没用,还是看人的。
你哪儿暖和?
还行吧,每次过来聊聊就好,不愿意回答问题也没事。
1.委托的定义
1.1从数据结构来讲,委托和类一样是用户自定义类型
1.2从设计模式来讲,委托提供了方法的抽象。
1.3委托是类型,就好像类是类型一样。与类一样,委托类型必须在被用来创建变量以及类型对象之前声明。