热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c#委托及匿名方法

什么是委托?可以认为委托是持有一个或多个方法的对象。但委托和典型的对象不同,可以执行委托,这时委托会执行它所持有的方法。委托和类一样,是一种用户自定义的类型。但类表示的是数据和方

什么是委托?

可以认为委托是持有一个或多个方法的对象。但委托和典型的对象不同,可以执行委托,这时委托会执行它所持有的方法。

委托和类一样,是一种用户自定义的类型。但类表示的是数据和方法的集合,而委托是持有一个或多个方法,及一系列预定义操作。

(1)声明一个委托类型,但是没有实现块

(2)使用该委托类型声明一个委托变量

(3)创建委托类型的对象,把它赋值给委托变量。新的委托对象包括指向某个方法的引用。

(4)可以选择为委托对象增加其他方法。这些方法必须与第一步中定义的委托类型有相同的签名和返回类型。

(5)在代码中你可以像调用方法一样调用委托。

声明委托:

delegate void MyDel ( int x );

委托类型的声明看上去与方法很相似,有返回类型和签名。返回类型和签名指定了委托接受的方法的形式。上面的MyDel类型的委托只会接受不返回值并且有单个int参数的方法。

声明委托变量和创建委托对象:

MyDel delVar; //声明委托变量

delVar = new MyDel ( myInstObj.MyM1 );//实例方法,简写可以把new去掉

dVar = new MyDel (SClass.OtherM2 );//静态方法,简写可以把new去掉

组合委托:就是创建了三个委托,但是第三个委托是由前两个委托组合成的。

为委托添加方法:

使用 += 运算符。

从委托移除方法:

使用 -= 运算符

调用委托:

delVar (...);

 

匿名方法:允许我们避免使用独立的具体方法。

是在初始化委托时内联声明的方法。

·delegate关键字

·参数列表

·语句块

返回类型:

返回值必须是与委托返回类型相同的值。

参数:

匿名方法的参数列表有三个方面要与委托相匹配:

·参数数量

·参数类型及位置

·修饰符

我们可以通过圆括号为空或者省略圆括号来简化匿名方法的参数列表,但要满足两个条件:

·委托的参数列表不包含out参数

·匿名方法不使用任何参数

params参数:

委托声明的参数列表包括了params参数,那么匿名方法中将忽略掉params关键字。

 



推荐阅读
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文是关于C#类型系统、值类型和引用类型的概念性笔记。介绍了C#1系统类型的三个特性,静态类型的含义,显式类型和隐式类型的区别。还讨论了类、结构、数组类型、枚举、委托类型和接口类型属于哪一种类型。同时纠正了关于结构、引用类型和对象传递的错误表述。最后提到了C#4中使用动态类型的关键字。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 本文介绍了C#中快速生成随机整数的方法。默认的Random类构造函数使用时间作为种子,会生成许多重复的随机数。文章探讨了是否有更快的方案,并讨论了随机数可以出现重复的情况。 ... [详细]
  • 在C#中,使用关键字abstract来定义抽象类和抽象方法。抽象类是一种不能被实例化的类,它只提供部分实现,但可以被其他类继承并创建实例。抽象类可以用于类、方法、属性、索引器和事件。在一个类声明中使用abstract表示该类倾向于作为其他类的基类成员被标识为抽象,或者被包含在一个抽象类中,必须由其派生类实现。本文介绍了C#中抽象类和抽象方法的基础知识,并提供了一个示例代码。 ... [详细]
author-avatar
121飒飒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有