欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > c# >内容正文

c#

c#语法:委托与方法 -ag凯发k8国际

发布时间:2024/10/14 c# 31 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 c#语法:委托与方法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、了解委托(delegate)

* 委托是一种全新的面向对象语言特性,运行于.net平台

   *基于委托开发事件驱动程序变得简单

*使用委托可以大大简化多线程编程的难度

2、理解委托

*委托(delegate)可以看成是一种数据类型,它可以定义变量,不过是一种特殊的变量。

*委托定义的变量,可以接受的数值是一个或多个方法,可以理解成它是存放方法的变量,或理解成委托就是一个方法指针。

3、委托的使用方法


using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks;namespace csharp控制台练习{class program{//【1】、声明委托 (定义一个函数的原形:返回值 参数类型和个数)public delegate int demodelegate(int a, int b);//【2】、要存放的方法等具体实现功能(比如加减法)static int add(int a, int b) { return a b; }static int sub(int a, int b) { return a - b; }static void main(string[] args){//【3】、定义委托变量,并且关联要存放于该变量的方法demodelegate objdel = new demodelegate(add);//【4】、通过委托调用方法,而不是直接调用方法console.writeline( objdel(10, 20));objdel -= add;objdel = sub;console.writeline( objdel(10, 20));console.readkey();}} }
此程序输出结果为30     -10.

使用委托的步骤:

1、声明委托:关键字delegate 返回值 委托名 参数 。 返回值和参数怎么确定? 当然是要和存放的方法类型要一致了

2、委托对象的定义。

3、将委托与方法关联起来,除了在创建对象的时候关联方法也可以通过  “ = " 绑定方法,也可以通过 ”-=“ 方法解绑 来实现方法的关联。

4、通过委托调用方法。


以上就是委托关联方法的具体步骤。但是上述代码并不能体现委托的真正用处。本来用方法就能实现的功能,搞得那么复杂不是闲得慌?

委托的用途十分多,其中一个就是可以实现窗体之间的通信,或者说是数据传递。现在要实现下述功能:有多个窗体,一个是主窗体,和其他是从窗体,主窗体中有一个单击按钮,而在每个从窗体中同步显示单击按钮的次数。要知道,一个窗体无法直接调用另一个窗体的方法,也无法直接操作另一个窗体的控件属性,通过委托便可以实现。

1、从窗体代码(frmother1.)

using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.threading.tasks; using system.windows.forms;namespace csharp窗体练习 {public partial class frmother1 : form{public frmother1(){initializecomponent();}public void receive(string counter){labcounter.text = counter;}} }


每个从窗体布局如图:只有一个label(name:labcounter)控件,代码中只多了一个receive方法。

主窗体布局如图:一个单击按钮(btncounter)一个复位按钮(btnclear).


using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.linq; using system.text; using system.threading.tasks; using system.windows.forms;namespace csharp窗体练习 {public delegate void showcounterdele(string counter);//【1】声明个委托,一般在类外面声明public partial class form1 : form{showcounterdele showcounterdel; //【2】定义委托对象public form1(){initializecomponent();frmother frmother = new frmother();frmother1 frmother1 = new frmother1();frmother2 frmother2 = new frmother2();showcounterdel = frmother.receive; //【3】将委托对象与方法关联起来showcounterdel = frmother1.receive;showcounterdel = frmother2.receive;frmother.show();frmother1.show();frmother2.show();}private int count = 0;private void btncounter_click(object sender, eventargs e){count ;showcounterdel(count.tostring()); //【4】、通过委托调用方法}private void btnclear_click(object sender, eventargs e){count=0;showcounterdel(count.tostring());}} }
执行上面程序,点击主窗体中的按钮,从窗体会显示单击次数。点击主窗体的复位按钮然后计数归零。

总结

以上是ag凯发k8国际为你收集整理的c#语法:委托与方法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图