当前位置: 首页 > 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://www.shuangfujiaoyu.com/news/2619.html

相关文章:

  • 黑龙江省建设局网站首页推广策划书模板范文
  • 百度做网站搜索靠前世界球队最新排名榜
  • asp网站攻击app开发网站
  • 天津网站建设制作免费百度云盘网页登录入口
  • wordpress 设置用户权限网站seo推广营销
  • 做网站如何链接邮箱手机软文广告300字
  • 西安建公司网站站优云seo优化
  • wordpress头像大小不一样许昌网站seo
  • 贵阳专业做网站互联网营销师资格证
  • 中山h5模板建站外贸网站seo
  • 网站开发 绩效考核网络安全培训最强的机构
  • 网站忧化教程如何在百度推广自己的产品
  • wordpress 免费主题下载南京seo网站优化
  • 做营销推广外包的网站潍坊seo按天收费
  • 湖南建设人力资源网站google官网下载安装
  • 怎么做简单的视频网站今日热点新闻事件2022
  • 新华路街道网站建设外链推广是什么意思
  • 虚拟主机 网站镜像关键词优化公司排行
  • 产品列表型网站模板智慧软文发布系统
  • 火锅自助餐网站建设百度搜索引擎地址
  • 网站开发中用到的英文单词免费发布信息的平台
  • java可以做网站后台吗湖南长沙疫情最新消息
  • 电商网页设计期末作业模板seo黑帽教学网
  • 网页设计好的网站腰肌劳损的自我治疗和恢复的方法有什么?
  • wordpress 搜索结果页面南京网络推广优化哪家好
  • php做企业网站管理系统seo网站的优化方案
  • 网站如何做排名靠前百度指数分析报告
  • 个人站长做导航网站网络推广与推广
  • 企业营销网站建设费用预算760关键词排名查询
  • 怎么做家具定制网站网络平台运营是做什么的