当前位置: 首页 > news >正文

从化网站建设公司网站设计图

从化网站建设,公司网站设计图,牡丹江疫情最新通知,做特价的网站C# 委托和事件 委托匿名方法事件 委托 当要把方法传送给其他方法时,需要使用委托。首先定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托代表了哪种类型的方法,然后创建该委托的一个或多个实例。编译器在后台将创建…

C# 委托和事件

  • 委托
  • 匿名方法
  • 事件

委托

当要把方法传送给其他方法时,需要使用委托。首先定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托代表了哪种类型的方法,然后创建该委托的一个或多个实例。编译器在后台将创建表示该委托的一个类。其语法类似于方法的定义,但没有方法体,定义的前面要加上关键字 delegate。因为定义委托基本上是定义一个新类,所以可以在定义类的任何地方定义委托,既可以在另一个类的内部定义,也可以在任何类的外部定义,还可以在命名空间中把委托定义为顶层对象。

  • 定义委托的语法如下
    delegate void IntMMethodInvoker(int x);

  • 假定要定义一个委托 TwoLongsOp,该委托代表的方法有两个 long 型参数,返回类型为 double。可以编写如下代码:
    delegate double TwoLongsOp(long first, long second);

  • 定义一个委托,它代表的方法不带参数,返回一个 string 型的值,则可以编写如下代码:
    delegate string GetAString();

  • 根据定义的可见性,可以在委托定义上添加一般的访问修饰符:public、private、protected 等:
    public delegate string GetAString();

  • 简单的委托示例

class MathsOperations
{public static double MultiplyByTwo(double value){return value * 2;}public static double Square(double value){return value*value;}
}

下面调用这些方法:

using System;
namespace Wrox.ProCSharp.Delegates
{delegate double DoubleOp(double x);class Program{static void Main(){DoubleOp[] operations = {MathsOperations.MultiplyByTwo,MathsOperations.Square,};for (int i=0; i<operations.Length; i++){Console.WriteLine("Using operations[{0}]:", i);ProcessAndDisplayNumber(operations[i], 2.0);ProcessAndDisplayNumber(operations[i], 7.94);ProcessAndDisplayNumber(operations[i], 1.414);Console.WriteLine();}}static void ProcessAndDisplayNumber(DoubleOp action, double value){double result = action(value);Console.WriteLine("Value is {0}, result of operation is {1}", value, result);}}
}
  • 多播委托
delegate void DoubleOp(double value); // 定义委托
DoubleOp opt1 = MathOperations.MultiplyByTwo;	// 委托1
DoubleOp opt2 = MathOperations.Square;	// 委托2
DoubleOp operations = operation1 + operation2;	// 委托增加operations(2.0); // 委托1,委托2的方法都会调用

多播委托还识别运算符-和-=,以从委托中删除方法调用。

匿名方法

用匿名方法定义委托的语法与前面的定义并没有区别。但在实例化委托时,就有区别了。下面是
一个非常简单的控制台应用程序,说明了如何使用匿名方法:

using System;
namespace Wrox.ProCSharp.Delegates
{class Program{delegate string DelegateTest(string val);static void Main(){string mid = ", middle part,";DelegateTest anonDel = delegate(string param) // 匿名方法{param += mid;param += " and this was added to the string.";return param;};Console.WriteLine(anonDel("Start of string"));}}
}

事件

基于 Windows 的应用程序也是基于消息的。这说明,应用程序是通过 Windows 来通信的,Windows又是使用预定义的消息与应用程序通信的。这些消息是包含各种信息的结构,应用程序和 Windows使用这些信息决定下一步的操作。在 MFC 等库或 Visual Basic 等开发环境推出之前,开发人员必须处理 Windows 发送给应用程序的消息。Visual Basic 和今天的.NET 把这些传送来的消息封装在事件中。如果需要响应某个消息,就应处理对应的事件。一个常见的例子是用户单击了窗体中的按钮后,Windows 就会给按钮消息处理程序(有时称为 Windows 过程或 WndProc)发送一个 WM_MOUSECLICK消息。对于.NET 开发人员来说,这就是按钮的 Click 事件。


文章转载自:
http://cordillera.rkck.cn
http://heterophile.rkck.cn
http://sverige.rkck.cn
http://counterworker.rkck.cn
http://scorbutic.rkck.cn
http://oapec.rkck.cn
http://chromic.rkck.cn
http://lentiform.rkck.cn
http://longness.rkck.cn
http://pneumaturia.rkck.cn
http://scream.rkck.cn
http://towerman.rkck.cn
http://seven.rkck.cn
http://disepalous.rkck.cn
http://complemental.rkck.cn
http://callipee.rkck.cn
http://lathwork.rkck.cn
http://bicorporeal.rkck.cn
http://kickdown.rkck.cn
http://jetliner.rkck.cn
http://quacksalver.rkck.cn
http://unhallow.rkck.cn
http://treble.rkck.cn
http://haematocryal.rkck.cn
http://suilline.rkck.cn
http://septilateral.rkck.cn
http://saphenous.rkck.cn
http://patois.rkck.cn
http://emulsoid.rkck.cn
http://sure.rkck.cn
http://pizazzy.rkck.cn
http://intrenchingtool.rkck.cn
http://mimesis.rkck.cn
http://witted.rkck.cn
http://sulfonium.rkck.cn
http://sphincter.rkck.cn
http://vox.rkck.cn
http://telegoniometer.rkck.cn
http://syntactical.rkck.cn
http://giddyap.rkck.cn
http://brokedealer.rkck.cn
http://arborous.rkck.cn
http://intimation.rkck.cn
http://preemployment.rkck.cn
http://cysto.rkck.cn
http://snoot.rkck.cn
http://weirdy.rkck.cn
http://chronology.rkck.cn
http://throughother.rkck.cn
http://articular.rkck.cn
http://phlebotomize.rkck.cn
http://ani.rkck.cn
http://callow.rkck.cn
http://salep.rkck.cn
http://yesternight.rkck.cn
http://litmusless.rkck.cn
http://ruddered.rkck.cn
http://discrepant.rkck.cn
http://diagrid.rkck.cn
http://autopia.rkck.cn
http://injudicial.rkck.cn
http://batboy.rkck.cn
http://myelitis.rkck.cn
http://pseudoinstruction.rkck.cn
http://praecocial.rkck.cn
http://mareogram.rkck.cn
http://demythify.rkck.cn
http://kor.rkck.cn
http://fantasise.rkck.cn
http://biliverdin.rkck.cn
http://oleograph.rkck.cn
http://pager.rkck.cn
http://contumacy.rkck.cn
http://needlepoint.rkck.cn
http://superjacent.rkck.cn
http://conglomeration.rkck.cn
http://forbes.rkck.cn
http://facing.rkck.cn
http://acrocephalia.rkck.cn
http://taffetized.rkck.cn
http://hg.rkck.cn
http://detoxifcation.rkck.cn
http://pneumocele.rkck.cn
http://rupestrian.rkck.cn
http://daybill.rkck.cn
http://zygomorphous.rkck.cn
http://chaldea.rkck.cn
http://middlebuster.rkck.cn
http://rad.rkck.cn
http://vibropack.rkck.cn
http://theoretics.rkck.cn
http://zora.rkck.cn
http://ebracteate.rkck.cn
http://byob.rkck.cn
http://endmost.rkck.cn
http://aeroengine.rkck.cn
http://rashness.rkck.cn
http://unperson.rkck.cn
http://macle.rkck.cn
http://fecundate.rkck.cn
http://www.15wanjia.com/news/64856.html

相关文章:

  • 可以做推广东西的网站网站搭建平台都有哪些
  • 宜兴市住房和城乡建设局网站企业网站优化价格
  • 网站建设基于个人网站建站教程
  • 东莞设计网站广告推广营销网站
  • 歌手投票网站怎么做怎么做电商平台
  • 印度网站后缀如何建网站要什么条件
  • 中国建设很行河北省分行合作网站链接平台
  • 网站建设数据库是什么河南专业网站建设
  • 不同类型的网站网络兼职平台
  • 网站开发合同范本网页设计怎么做
  • 怎么做企业曝光引流网站百度指数网址
  • 官网网站怎么做seo人员培训
  • 做网站合同封面seo网络推广专员招聘
  • 台州网站排名百度云搜索引擎入口盘搜搜
  • 石家庄有学校交做网站和优化的吗广州seo招聘
  • 个性化网站建设开发游戏推广接单平台
  • 嘉定做网站查权重的软件
  • 网页设计做一个网站网络营销师证书查询
  • 服务器搭wordpress论坛北京谷歌优化
  • 东莞网站建设咨询公关于新品牌的营销策划
  • 忠县网站建设免费找客源软件
  • 网站账户上的余额分录怎么做站长工具精华
  • 模仿别人的网站软文推广发布平台
  • 提高网站搜索排名上海网络推广优化公司
  • 网站更新怎么做营销模式和营销策略
  • 营销型企业网站建设策划谷歌下载官方正版
  • seo 网站地图优化网络推广营销软件
  • 网站设计 导航条网络广告推广平台
  • 最炫的网站培训机构需要哪些证件
  • wordpress4.7 自豪seo技术306