委托就是以方法为参数的类型。不懂,
看代码
正常情况下是这样的
有个方法是
public void Love(string country)
{
messagebox.show("I Love"+" "+country);
}
你要调用这个方法是不是这样的啊
string m="中国!";
Love(m);
委托就是在这个例子中,Love若是为委托的话,那么m就是一个方法。
但是这样的效果肯定不好,I Love 中国 应该为 我爱中国
加个判断
if(country="中国")
messagebox.show("我爱"+" "+country);
如果是其他的国家的呢,,
写个方法去判断国家名字
public void Country(string countryName)
{
if(countryName="中国")
China(countryName);
}
如果是中国的话,则调用这个方法
public void China(string country)
{
messagebox.show("我爱"+" "+country);
}
这样写很麻烦 要是把国家和语言都传递给一个方法
public void Love(string lan,string country)
{
messagebox.show(lan+" "+country);
}
调用的时候就可以这样写了,Love("我爱","中国");但是程序员不是神,他不可能知道每个国家的语言吧
public void ChinaLove(string country)
{
messagebox.show("我爱"+" "+country);
}
但是前提是我得判断是哪一国家的啊,,但是全球有那么多的国家,如果我把国家的名字作为参数放在 love方法里,然后根据不同的国家,执行对应的代码,那该多好啊
有一个神奇的函数 HHH(countryName ,Method) 第一个是国家的名字,第二个是执行的方法 比如我如果选的是中国=》ChinaLove("中国");
委托就是这样的啊
delegate void Language(string Country); 加了个delegate 其他的和方法没有什么区别啊 这是定义,但是我怎用呢,是不是想到开头的m的定义是 string m="";
所以这里的委托用的时候应该这样写
Language delLang ;//这是先定义好,还没有赋值呢
那段神奇的结构就是这样的了
HHH(china,deLang)
但是我怎么调用啊
HHH(china,deLang)
{
deLang(china)
}
这样都行啊,,我记得字符出有拼接的难道他也有,,好像真有
我难道可以这样
Language Chi;
Language Eng+=Chi;都可以
还挺方便的,比如一个混血儿,爱两个国家 就可以
Language Chi;
Language f+=Chi
HHH(china,Eng);
但是有个国家变得很差劲,不爱了
Eng-=f;
我有很多地方用到这类性的,怎么办,,总不能写同一个类里面
委托写在一个类里面 比如说叫Test类
调用的时候得这样吧
Test T=new Test();
T.HHH(参数)
要是那个国家变好了 Language f+=Chi;
我得这样写
HHH(“中国”,f);会有两个弹窗
其实是不是f 相当于是传递了两次, 优化吧
HHH(string country)
{
if(deLang!=null)
deLang(country)
}
前提是这个委托的访问修饰符必须是public ,但是都是public很容易错啊,必须改为private ,改为私有的,调不了啊。如果能像string那样进行封装成属性,,该多好吧
那就用事件吧,,我只知道老师教的click事件,其他的不懂,但是只知道有event,难道是用event,,
public event Language deLang()
但是事件 只能出现在 += 或 -= 的左边
从上面好像是 HHH函数 听强大的,他能你传递的参数来做相应的事情,,是不是相当于监听啊,,我一直在监听你要传给我的参数,然后执行方法,
我什么时候要用委托啊,还有事件啊,,不想用if else 的时候,,用if else 粗心的人比较容易出bug,我不太喜欢,,,
但是这样调用太麻烦了,又懒了,那就用lambda ,这啥玩意,到msdn上看看
delegate void Language(string Country);