黑马程序员技术交流社区

标题: C#委托 [打印本页]

作者: 面朝大海,春暖    时间: 2013-10-12 20:41
标题: C#委托
本帖最后由 面朝大海,春暖 于 2013-10-13 09:03 编辑

using System;
using System.Collections.Generic; using System.Text;
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
class Program {
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();
} } }
输出如下:
Morning, Jimmy Zhang 早上好, 张子阳
上述代码红色注释部分说GreetPeople方法接受一个GreetingDelegate类型的方法作为参数,其实我更觉得是传递的是方法名,比如EnglishGreeting通过形参MakeGreeting传进去,整好就完成了一个方法调用。。求解惑。。

作者: haxyek    时间: 2013-10-12 22:49
你说的对啊,困惑啥?
作者: Liu阳    时间: 2013-10-12 22:54
委托是一个能存放很多方法的指针的调用清单(但方法签名必须和委托类型签名一样),你一调用这个清单,那么清单里的所有的指针所对应的方法就会依次被执行。那么它是简单的传入了方法名吗?+=注册方法,它会遍历执行哦,我是这么理解的,求加分!
作者: 黄广祯    时间: 2013-10-12 23:30
本帖最后由 黄广祯 于 2013-10-12 23:35 编辑

看不懂你的疑惑在什么地方 ,感觉你说的比我理解的委托透彻多了。。。{:soso_e127:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2