C#委托与事件的关系(转载)】的更多相关文章

1.C#中的事件和委托的作用?事件代表一个组件能够被关注的一种信号,比如你的大肠会向你发出想拉屎的信号,你就可以接收到上厕所.委托是可以把一个过程封装成变量进行传递并且执行的对象,比如你上蹲坑和上坐马桶拉屎的方式是不一样的,但是你的大脑不需要知道两种方式的不同,只需要在蹲坑的时候获取身体用于蹲位姿势的委托进行调用拉屎,在坐马桶的时候获取坐姿的委托进行调用拉屎. 2.他们之间的关系?委托是一种类型,事件是一种成员,就相当于public int Age {get;set;}这个属性中,int就是类型…
首先,委托 是一个好东西.按我的理解,委托 是针对 方法 的更小粒度的抽象.比较interface,他精简了一些代码.使得 订阅-通知 (观察者模式)的实现变得非常简洁. 关于事件,我最初的理解是:事件是利用委托  对  通知-订阅模式 的一种实现方式. 我觉得我并没有理解错,但还不够精确. 我现在要问: 为什么要用非要事件来实现 通知-订阅模式? 而不直接用委托呢?事件到底解决了什么问题? 在<果壳中的C# 中文版> P112页 说了. 总的目标是 事件-订阅 模式中,保护订阅互不影响. 如…
事件是对委托的封装. 如果一个类里,你把一个委托声明为 public 了,那么外部就可以随意改变委托变量的值,包括清空委托变量等,这样的话就违背了面向对象思想的封装特性:但如果声明为 private ,那就失去了委托的意义(在外部不能给委托添加函数引用).此时就需要事件了. 可以把事件看成是委托的实例,事件是对委托的封装,就像类的属性成员一样,事件封装了委托,这样,就可以把委托定义为 private 类型,在外部就可以通过与委托对应的事件来访问委托了,而事件受到限制符“+=”“-=”的影响,不会…
委托(Delegate)是安全封装方法的类型,类似于C和C++中的函数指针,与函数指针不同的是,委托是面向对象的.类型安全的和可靠的: 一.委托类型是CTS中五种基础类型之一,是一种引用类型,表示对具有指定参数列表和返回类型的方法的引用,也是一种特殊的类类型,其类型为System.MulticastDelegate,继承自抽象类System.Delegate:使用委托类型声明的对象,即委托实例,是一种特殊类型的对象,其可以与任何该委托所能封装的方法相关联,然后通过委托实例调用这些方法: ※在命名…
目录 C#委托与事件的总结 1.概述 2.委托 2.1 什么是委托 2.2 委託的使用 2.3 深入理解委托 2.4 为什么要使用委托 2.5 代码清单 3.事件 3.1 事件与委托的关系 3.2 订阅者与发布者(监视对象与监视者) 4.參考目錄 C#委托与事件的总结 1.概述 委托与事件是C# 1.0版本的新特性,与C# 1.0版本对应的是.NET Framework 1.0,发布于2002年1月,在这个版本中C#还提供了编程语言基础特性: Classes:面向对象特性,支持类类型 Struc…
本节对事件进行总结. 二.事件: 1.概念:Event:A member that enables an object or class to provide notifications;官方的解释是这样,就是说在C#中,事件是使 对象或者类具备通知能力的成员.比如说手机收到短信提醒我去开会,那么手机就充当了一个具备通知能力的成员.说白了,事件 的作用就是对象和类之间的信息传递的桥梁. 2.原理:源于发生-响应模型: 事件源(event source) + 事件本身(event) => 事件的订…
窗体间的传值,最好使用委托方式传值,开始之前,我们先来说一下委托与事件的关系. 委托:是一个类. 事件:是委托类型的一个特殊实例,只能在类的内部触发执行. 首先创建2个窗体,这里我们以form1为发送窗体,form2为接收窗体 form1窗体 form2窗体 方式一(最简单的方式) form1窗体代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; us…
原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委托是一个类型,是一个函数指针类型,这个类型将该委托的实例化对象所能指向的函数的细节封装起来了,即规定了所能指向的函数的签名,也就是限制了所能指向的函数的参数和返回值.当实例化委托的时候,委托对象会指向某一个匹配的函数,实质就是将函数的地址赋值给了该委托的对象,然后就可以通过该委托对象来调用所指向的函…
原文地址 http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx 感谢博主分享! 范例说明 假设我们有个高档的热水器,我们给它通上电,当水温超过95度的时候:1.扬声器会开始发出语音,告诉你水的温度:2.液晶屏也会改变水温的显示,来提示水已经快烧开了. 现在我们需要写个程序来模拟这个烧水的过程,我们将定义一个类来代表热水器,我们管它叫:Heater,它有代表水温的字段,叫做temperatur…
  之前的两篇文章我们了解了委托和事件,本文我们看一下线程. 1,一个窗体程序,默认拥有一个线程(相当于一个商店里面,只有一个店员),这个默认的线程叫做 UI线程/主线程. 2,进程和线程的关系: A,进程,包含程序运行所需要的资源 ,在大多数情况下是指 程序.(商店:囤积要使用的资源的地方) B,线程,是在进程中能够被CPU调用的程序单元,是提供给CPU运行程序的代码片段.(商店员工:是运行程序的行动者) C,一个进程至少一个线程,每一个线程有自己专属的寄存器(栈指针.程序计数器等)但代码区是…