委托与事件的关系

  委托与事件的关系,可参照字段跟属性的关系来理解。

  属性的一个功能就是设置字段,可以给字段设置权限。字段可以是值类型,也可以是引用类型,当然包括数组在内。那么委托呢?委托是把方法参数化,想要使用方法时直接使用就可以了(有时候要在不同的地方使用同一个方法,如果把方法的引用交给委托,要使用的时候直接让委托占位(委托去调用这个或这些方法),就方便多了)。

  声明一个委托:public deletate void MyDelegate();

  可以把委托当做一个容器(名片夹),里面装的是方法的引用(这里我们可以把方法理解为工具,而引用就相当于工具的一个名片来标示工具的位置),容器里可以装很多的名片夹(可以注册多个方法给委托),需要使用时,会按照名片的顺序来调用方法(多播委托)。

  一个委托类型的变量可以引用一个或多个方法。

  

    事件的本质就是对委托的封装,约束委托什么时候执行委托里面的方法(不然委托岂不是无法无天逍遥自在了),事实上事件也是对委托的一种安全保护,委托可以赋值,而事件是需要注册的。

    委托可以赋值时因为委托本身装的就是方法的引用,引用本身就是一个“值”,裸露的值有可能被更改(如果委托被重新赋值,那么注册的方法的引用就都会被冲掉。+=是注册,而=是全部刷掉再赋新的值得引用),er事件只能注册,后续...........

  《《当做笔记》》

时间: 2024-11-08 22:23:09

委托与事件的关系的相关文章

c#中委托与事件的关系

C#中的事件处理实际上是一种具有特殊签名的delegate,象下面这个样子:public delegate void MyEventHandler(object sender, MyEventArgs e);其中的两个参数,sender代表事件发送者,e是事件参数类.MyEventArgs类用来包含与事件相关的数据,所有的事件参数类都必须从System.EventArgs类派生.当然,如果你的事件不含参数,那么可以直接用System.EventArgs类作为参数. 就是这么简单,结合delega

C#中 委托和事件的关系

首先,委托 是一个好东西.按我的理解,委托 是针对 方法 的更小粒度的抽象.比较interface,他精简了一些代码.使得 订阅-通知 (观察者模式)的实现变得非常简洁. 关于事件,我最初的理解是:事件是利用委托  对  通知-订阅模式 的一种实现方式. 我觉得我并没有理解错,但还不够精确. 我现在要问: 为什么要用非要事件来实现 通知-订阅模式? 而不直接用委托呢?事件到底解决了什么问题? 在<果壳中的C# 中文版> P112页 说了. 总的目标是 事件-订阅 模式中,保护订阅互不影响. 如

通过一个WPF实例进一步理解委托和事件

在前写过"浅谈C#中的委托"和"浅谈C#中的事件"两篇博客,内容有些抽象,似乎难以说明委托和事件的关系. 今天通过一个小程序来进一步说明二者的使用及联系. 首先新建一个WPF应用程序,取名TestDelegateAndEvent. 在.xmal中加入四个按钮,并添加Window_Loaded事件. 代码如下: <Window x:Class="TestDelegateAndEvent.MainWindow" xmlns="http

对张子阳先生对委托和事件的两篇文章的读后思考(说得很透,内附故事一篇)

第一篇 C#中的委托和事件 第二篇 C#中的委托和事件(续) 首先,张子阳先生的这是两篇关于委托和事件间关系的文章,是目前为止我读过的介绍委托和事件以及异步调用最简明清晰文章,作者通过非常有节奏的"标题"->"问题"->"思路"->"实现"->"讲解"的结构,分步骤一步一步地将委托和事件的实现.应用与原理阐述得非常清楚,并且在行文期间将自己有趣的思考过程通过生动的语言表达了出来,使人

委托和事件(一)

这篇博文我不讲委托和事件的概念,因为大段的文字概念没有任何意义. 具体想了解,委托和事件的概念可以MSDN查阅. 我这篇文章的主题思路是委托如何一步步进化成事件: 何为委托--->委托来实现事件--->用方法对委托的封装--->Event的 add,remove方法的引入--->标准事件写法--->反编译探究竟. 用几个例子以及Reflector反编译探究委托和事件的关系.不足之处,还望多多指教... 何为委托: 首先,委托是一种类型,是一种定义了方法签名的类型. 委托可以理

重中之重:委托与事件

相关文章链接 编程之基础:数据类型(一) 编程之基础:数据类型(二) 高屋建瓴:梳理编程约定 动力之源:代码中的泵 难免的尴尬:代码依赖 可复用代码:组件的来龙去脉 物以类聚:对象也有生命 重中之重:委托与事件 5.1 什么是.NET中的委托 5.1.1 委托的结构 5.1.2 委托链表 5.1.3 委托的不可改变特性 5.1.4 委托的作用 5.2 事件与委托的关系 5.3 使用事件编程 5.3.1 注销跟注册事件同样重要 5.3.2 多线程中使用事件 5.3.3 委托链表的分步调用 5.3.

C#中委托和事件

目 录 1.1 理解委托 2 1.1.1 将方法作为方法的参数 2 1.1.2 将方法绑定到委托 4 1.2 事件的由来 6 1.2.1 更好的封装性 6 1.2.2 限制类型能力 9 1.3 委托的编译代码 10 1.4 .NET 框架中的委托和事件 11 1.4.1 范例说明 11 1.4.2 Observer 设计模式简介 12 1.4.3 实现范例的Observer 设计模式 13 1.4.4 .NET 框架中的委托与事件 14 1.5 委托进阶 16 1.5.1 为什么委托定义的返回值

[转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)

原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委托是一个类型,是一个函数指针类型,这个类型将该委托的实例化对象所能指向的函数的细节封装起来了,即规定了所能指向的函数的签名,也就是限制了所能指向的函数的参数和返回值.当实例化委托的时候,委托对象会指向某一个匹配的函数,实质就是将函数的地址赋值给了该委托的对象,然后就可以通过该委托对象来调用所指向的函

面向对象基础(继承类,抽象方法,接口,委托和事件)

1.页面上实现猫叫,狗叫,虎叫 <asp:Button ID="cat" runat="server" Text="猫叫" onclick="cat_Click" /><br/> <asp:Button ID="dog" runat="server" Text="狗叫" onclick="dog_Click" />