A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 面朝大海,春暖 中级黑马   /  2013-10-12 20:41  /  1330 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 面朝大海,春暖 于 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传进去,整好就完成了一个方法调用。。求解惑。。

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

3 个回复

倒序浏览
你说的对啊,困惑啥?
回复 使用道具 举报
委托是一个能存放很多方法的指针的调用清单(但方法签名必须和委托类型签名一样),你一调用这个清单,那么清单里的所有的指针所对应的方法就会依次被执行。那么它是简单的传入了方法名吗?+=注册方法,它会遍历执行哦,我是这么理解的,求加分!

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黄广祯 于 2013-10-12 23:35 编辑

看不懂你的疑惑在什么地方 ,感觉你说的比我理解的委托透彻多了。。。{:soso_e127:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马