您的位置:首页 > 编程语言 > C#

C#基本功------委托和事件(一)

2016-03-31 13:29 501 查看
首先我们来看一个代码

staticvoidMain(string[]args)
{
Test(Show);
}
publicstaticvoidTest()
{}

publicstaticvoidShow(){}红色标注的地方发生了错误,显然是不能传入一个方法的,这个时候我们会想

publicstaticvoidTest(XXXXshow)
{}如果有个XXXX类型,能够让我传入一个方法,那就好了,那么,我们怎么做呢?

委托!!!

publicdelegatevoidMydelegate();----我们来讲解下为什么这么写,首先delegate是声明委托的关键字viod是我们想要调用函数的返回值,明显Show的返回值是void
括号里的内容,是我们想要调用函数的参数,显然是没有参数的,也就是说,你想要传一个方法,必须有一个方法的类型SH其实就是Show
staticvoidMain(string[]args)
{
Test(Show);
}
publicstaticvoidTest(MydelegateSH)
{}

publicstaticvoidShow(){}


请看下面一段代码

publicdelegateintMydelegate(inta1,inta2);
staticvoidMain(string[]args)
{
Add(Ts);-------执行1
Console.ReadKey();
}
publicstaticvoidAdd(MydelegateSH)----执行2
{
intsum=SH(1,5);----执行3
Console.WriteLine(sum);
}

publicstaticintTs(intn1,intn2)
{
returnn1+n2;
}
下面改造一下这个代码


publicdelegateintMydelegate(inta1,inta2);
staticvoidMain(string[]args)
{
intsum=Add(Ts,50,60);------想传入什么值都可以
Console.WriteLine(sum);
Console.ReadKey();
}
publicstaticintAdd(MydelegateSH,intnum1,intnum2)
{
returnSH(num1,num2);

}

publicstaticintTs(intn1,intn2)
{
returnn1+n2;
}




现在我们对于委托有了基本概念,但是,我们为什么要用委托呢?委托在什么情况下使用呢?

publicvoidDosth()//这是student类中的一个方法
{
Console.WriteLine("吃早饭");
//=====这里是个坑,因为我可能做的事情不一样,所以这里使用委托比较好
Console.WriteLine("吃午饭");
}


staticvoidMain(string[]args)//主函数中调用这个方法,这个时候,我们知道,我们不可能一直做一样的事情
{
Studentstu=newStudent();
stu.Dosth();
Console.ReadKey();
}
====================================================


publicdelegatevoidMyDel();//无参数无返回值的委托
这个时候,我们将这段代码写在Dosth()这个方法的上面,shengm一个委托,我们怎么用呢?


staticvoidMain(string[]args)
{
Studentstu=newStudent();
stu.Dosth(play);
Console.ReadKey();
}
publicstaticvoidplay()
{
Console.WriteLine("哈哈,我可以打游戏了,我好爽,不服你打我");
}



显然我们是这么用的,那么,懂了吗?委托的最基本的用处就是给你在一个方法里面挖一个坑,当你需要使用这个坑的时候,把他填上就可以了










                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: