委托小问题

wangs_1 2011-09-15 05:36:14
     private delegate void GreetingDelegate(string name);


private void EnglishPeople(string name)
{
MessageBox.Show("morning"+name);
}

private void ChinesePeople(string name)
{
MessageBox.Show("早上好!"+name);
}


private void GreetPeople(string name,GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}

public void button1_Click(object sender, EventArgs e)
{
GreetPeople("成龙",ChinesePeople);
}
想问一下大家 MakeGreeting 为什么能代表EnglishPeople(),ChinesePeople()方法 。如果我在写一个方法,它还能代表吗
...全文
129 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
z812183667 2011-09-16
  • 打赏
  • 举报
回复
委托定义了一个方法模型 既是一种规范!所有符合的方法都可以传进去!
sdl2005lyx 2011-09-16
  • 打赏
  • 举报
回复
委托,与C++的函数指针非常类似,它只是定义一个规范:

参数类型,参数个数、返回值!

只要复合这个规范的,它都可以代表!

tian6565597 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wangs_1 的回复:]
引用 3 楼 skyparty 的回复:
只要参数,和返回值格式一样,都可以套用委托

如果我在定义一个 private void GetName(int id){}方法,是不是就不能在使用委托了?
[/Quote]

不能使用上述代码实现的委托。
另,委托使用需要注册,即创建委托实例。
iangenius 2011-09-16
  • 打赏
  • 举报
回复
你定义的方法必须与委托相同,即返回类型、参数个数、参数类型等等都必须与委托相同
然后再程序运行的初始化过程中,注册委托,如
englishpople+=new GreetingDelegate;
即可
wangs_1 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 skyparty 的回复:]
只要参数,和返回值格式一样,都可以套用委托
[/Quote]
如果我在定义一个 private void GetName(int id){}方法,是不是就不能在使用委托了?
kbcsy 2011-09-15
  • 打赏
  • 举报
回复
试了一下,楼主的好像已经实现了调用ChinesePeople()方法了吧
TNight 2011-09-15
  • 打赏
  • 举报
回复
lz要是在学委托的话,貌似我电脑里有些以前写的委托小例子,要的话我可以发你
小赖赖 2011-09-15
  • 打赏
  • 举报
回复
只要参数,和返回值格式一样,都可以套用委托
  • 打赏
  • 举报
回复
将方法注册在委托上 就可以了!
Bullatus 2011-09-15
  • 打赏
  • 举报
回复
只要符合委托的都可以,这是.NET的一种机制

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧