使用委托时遇到的问题

lqh3417 2010-10-23 02:48:38
怎样才能在主方法中决定Greeting的方式?
代码如下:


using System;
using System.Collections.Generic;
using System.Text;

namespace Delegate {
public class Greet
{
string Emsg, Cmsg;
public Greet(string Emsg, string Cmsg)
{
this.Emsg = Emsg;
this.Cmsg = Cmsg;
}
public delegate void GreetingDelegate(string name);

public void EnglishGreeting(string name)
{
Console.WriteLine(Emsg + name);
}
public void ChineseGreeting(string name)
{
Console.WriteLine(Cmsg + name);
}

public void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
}
public class between{
public between(string Emsg,)
{
Greet g = new Greet(Emsg, "早上好,");
g.GreetPeople("张", g.ChineseGreeting);
}

}
public class Program
{
public static void Main(string[] args)
{
between bt = new between("Good Morning");
Console.ReadKey();
}
}
}


我想按照这样修改代码,不知道**********部分应该怎么办
。。。
public between(string Emsg,***********)
{
Greet g = new Greet(Emsg, "早上好,");
g.GreetPeople("张", ***********);
}。。。
public static void Main(string[] args)
{
between bt = new between("Good Morning",**********);
Console.ReadKey();
}。。。


...全文
129 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqh3417 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kensouterry 的回复:]
不明白楼主是想做翻译功能还是什么?
[/Quote]
主要是增加方法后不要让程序变动太大,想用方法作为方法的参数
比如if...else和switch...case的话会很麻烦,而委托恰好解决了这个问题
但是我对委托使用还不太熟悉,所以过来请教一下各位
lqh3417 2010-10-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sito_hongta 的回复:]
樓主看的‘楚廣明’的教程?
[/Quote]
不是哦,我百度到的,原文在这里
http://www.cnblogs.com/JimmyZhang/archive/2007/09/23/903360.html
lqh3417 2010-10-23
  • 打赏
  • 举报
回复
我只是把开发的项目中的问题简化为这样一段代码,看来没必要委托还是不要用委托了呵呵

我是在这里真正对委托感兴趣的
http://topic.csdn.net/u/20080514/10/d1f6afbb-235e-427a-96d3-9e7f861a1df8.html
能否解释一下上面网址3#楼那位朋友的那句“帅”的代码呢呵呵?
sito_hongta 2010-10-23
  • 打赏
  • 举报
回复
樓主看的‘楚廣明’的教程?
kensouterry 2010-10-23
  • 打赏
  • 举报
回复

不明白楼主是想做翻译功能还是什么?
ermuzi 2010-10-23
  • 打赏
  • 举报
回复
楼主定义想要的应该是问候语固定的

1.定义全局选项:
enum LanguageType{English, Chinese}
2.定义between构造,选择名字和语种
public between(string name, LanguageType lt)
{
Greet g = new Greet("Good morning,", "早上好,");
Greet.GreetingDelegate gd = null;
switch(lt)
{
case LanguageType.Chinese:
gd = new Greet.GreetingDelegate(g.ChineseGreeting);
break;
case LanguageType.English:
gd = new Greet.GreetingDelegate(g.EnglishGreeting);
break;
}
g.GreetPeople(name, gd);
}
3.主方法中决定Greeting的人和方式
public static void Main(string[] args)
{
between bt = new between("张", LanguageType.Chinese);
between bt = new between("Zhang", LanguageType.English);
Console.ReadKey();
}
ZengHD 2010-10-23
  • 打赏
  • 举报
回复

有点乱

using System;
using System.Collections.Generic;
using System.Text;

namespace Delegate
{
public delegate void GreetingDelegate(string name);

public class Greet
{
string Emsg, Cmsg;
public Greet(string Emsg, string Cmsg)
{
this.Emsg = Emsg;
this.Cmsg = Cmsg;
}

public void EnglishGreeting(string name)
{
Console.WriteLine(Emsg + name);
}

public void ChineseGreeting(string name)
{
Console.WriteLine(Cmsg + name);
}

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

public class between
{
public between(string Emsg,Greet g, GreetingDelegate Greetin)
{
g.GreetPeople(Emsg, Greetin);
}

}

public class Program
{
public static void Main(string[] args)
{
Greet g = new Greet("张", "早上好,");
between bt = new between("Good Morning",g,g.EnglishGreeting);
Console.ReadKey();
}
}
}
gucangen 2010-10-23
  • 打赏
  • 举报
回复
为什么要用委托呢?
我搞了2个完整的系统
一个C/S+SQL
一个B/S+ORACLE
到现在还不知道委托是什么东西;
看了你这个是在学习,不像是在工作中用到的
最好的学习方法整项目实践中学吧
否则时间怎么浪费掉的都不知道了
个人看法,别见笑

111,129

社区成员

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

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

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