C#知识点-委托

一、什么是委托

委托和类一样,是一种用户自定义类型;

类表示的是数据和方法的集合,而委托则持有一个或多个方法;

二、委托的使用

1.声明委托类型

委托是类型,与类一样,委托类型必须在被用来创建变量以及类型的对象之前声明;

注意:

以delegate关键字开头;

没有方法主体;

2.创建委托对象

委托是引用类型,因此有引用和对象;

方式一:使用带new运算符的对象创建表达式

方式二:快捷方式,方法名称和其相应的委托类型之间存在隐式转换

3.给委托赋值

由于委托是引用类型,通过赋值来改变包含在委托变量中的引用。旧的委托对象就会被垃圾回收器回收

4.组合委托

注意:

委托是恒定的,委托对象被创建后就不能再被改变

5.为委托添加方法

注意:为委托添加方法的结果,

其实由于委托类型是不可变的,所有为委托的调用列表添加了3个方法后的结果其实是变量指向了一个全新的委托

6.从委托移除方法

注意:

如果调用列表中的方法有多个实例,-=运算符将从列表最后开始搜索,并移除第一个与方法匹配的实例;

试图删除委托中不存在的方法没有效果;

试图删除空委托会抛出异常。我们可以通过委托和null进行比较来判断委托的调用列表是否为空。如果调用列表为空,则委托为null

7.调用委托

可以像调用方法一样调用委托

注意:

使用参数调用委托就会使用相同的参数值调用它的调用列表中的每一个成员;

如果一个方法在调用列表中出现多次,当委托调用时,每次在列表中遇到这个方法时它都会被调用一次

7.调用带返回值的委托

分析

注意:

调用列表中的最后一个方法返回的值就是委托调用返回的值;

调用列表中所有其他方法的返回值都会被忽略

8.调用带引用参数的委托

注意:

如果委托有引用参数,参数值会根据调用列表中的一个或多个方法的返回值而改变;

在调用委托列表中的下一个方法时,参数的新值会传给下一个方法;

时间: 2024-11-07 12:22:44

C#知识点-委托的相关文章

8.C#知识点:委托和事件

知识点目录==========>传送门 首先推荐两篇大牛写的委托和事件的博客,写的超级好!看了就包你看会,想学习的朋友直接看这两篇就足以,我自己写的是算是自己学习的纪录. 传送门==========>C# 中的委托和事件         C# 中的委托和事件续. 委托是什么? 委托是一个类,它定义了一种的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性. --摘自百度百

iOS技巧篇之UIViewController与UIView的双向交互

1.场景描述 在iOS开发过程中,一般都是UIViewController来控制UIView的行为,一般很少方向交互,即UIView的特性变化后调用UIViewController的相应的方法,在遇到这种情况,大多数都采用了在UIView的子类中放一个UIViewController的指针,当UIView需要调用UIViewController的方法的时候,就可以通过这个指针来实现了. 2.解决方案 这种方法是有效的(C/C++常用哦),但总是觉得不够优雅,有没有其他办法来实现呢,答案是肯定的,

回望2014,展望2015

2014 过去好久了 一直想总结下,可是没有一直拖到这个时候 ,不是没有时间 而是懒,真的很懒呢!做事情总是在拖,寻找各种借口,总是处在一种迷迷茫茫 浑浑噩噩的状态,也不知道自己是干嘛,该干嘛! 总之2014年 是工作的第一年,是正式步入社会的一年,在这一年里 我其实并咩有多少改变,还是在学校的状态,工作上丝毫没有设么激情和变化起色,当一天和尚撞一天钟,技术上 也没有主动去学习什么内容,对知识是一知半解的,单纯的会用,不求甚解,原理设么的不知道,不会举一反三,在业务上也只是单纯的让做什么 就了解

C#高级知识点概要(1) - 委托和事件

作者:linybo 要成为大牛,必然要有扎实的基本功,不然时间再长项目再多也很难有大的提升.本系列讲的C# 高级知识点,是非常值得去撑握的,不仅可以让你写代码时游刃有余,而且去研究和学习一些开源项目时,也不会显得那么吃力了. 希望大家记住,这里讲的所有的知识点,不仅仅是了解了就可以了,还要会灵活用,一定要多思考,撑握其中的编程思想. 本文讲的是委托和事件,这两个词可能你早就耳熟能详,但你是否真正撑握了呢? 本系列讲的C#高级知识点都是要求开发时能达到可以徒手写出来的水平(不依赖搜索引擎.找笔记等

[ASP.NET MVC 大牛之路]02 - C#高级知识点概要(1) - 委托和事件

在ASP.NET MVC 小牛之路系列中,前面用了一篇文章提了一下C#的一些知识点.照此,ASP.NET MVC 大牛之路系列也先给大家普及一下C#.NET中的高级知识点.每个知识点不太会过于详细,但足矣.要深入研究还需要去查看更多的专业资料. 要成为大牛,必然要有扎实的基本功,不然时间再长项目再多也很难有大的提升.本系列讲的C# 高级知识点,是非常值得去撑握的,不仅可以让你写代码时游刃有余,而且去研究和学习一些开源项目时,也不会显得那么吃力了. 希望大家记住,这里讲的所有的知识点,不仅仅是了解

C#一些知识点:委托和事件的区别

在C#中,委托和事件是比较容易混淆的两个知识点,本篇博客就记录一下委托和事件之间的区别. 定义上的区别 委托:委托实际上是一个类,用来表示一个函数,可以理解为C++中的函数指针. 事件:事件是一个修饰符,用来修饰一个委托类型的属性,表示该委托的部分功能被限制了. 我们可以这么理解:委托是类,定义了委托后,就可以像使用类一样的来使用这个委托,而事件修饰了委托后则是表示限制这个委托的部分功能,使其满足作为事件的规则. 那么事件究竟限制了委托的什么功能呢?主要是下面的这两个限制: 调用的限制 委托的调

每天一个JS 小demo之通过事件委托实现菜单展开及选中特效。主要知识点:事件

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style type="text/css">body { margin: 0; background: #f1f1f1;}p { margin: 0;} #dorpDown { position: r

Java进击C#——语法之知识点的改进

本章简言 上一章我们讲到关于面向对象思想上C#和JAVA之差别.笔者分别从面向对象的三大特性入手.而本章主要讲一些C#改进的知识点.在.NET Framework 2.0之后出现很多新的知识点.这些知识点更是让C#在写法上更加的多样性.有些写法还真的让笔者觉得很有不错.由于这一部分的知识更多是C#独有的.很有难用JAVA这边的知识来讲.所以这章可能会纯C#了.虽然在JAVA 7 和JAVA 8中出现很多特性.可惜笔者却没有认真的学习一下新特性. 初始化语法的改进 一.类的初始化方式.类初始化的时

C#高级知识点概要(2) - 线程和并发

原文地址:http://www.cnblogs.com/Leo_wl/p/4192935.html 我也想过跳过C#高级知识点概要直接讲MVC,但经过前思后想,还是觉得有必要讲的.我希望通过自己的经验给大家一些指引,带着大家一起走上ASP.NET MVC大牛之路,少走弯路.同时也希望能和大家一起交流,这样也能发现我自己的不足,对我自己的帮助也是非常大的. 建议大家对C#撑握的不错的时候,可以去看一些开源项目.走技术这条路,就要耐得住寂寞(群里双休日说要让群主找妹子进群的人必须反思),练好内功.不