C#一个关于委托和事件通俗易懂的例子

 1 using System;
 2
 3 namespace Test
 4 {
 5     public class 室友
 6     {
 7         public delegate void 这是一个委托();
 8
 9         public void 起床晨跑去()
10         {
11             Console.WriteLine("室友:喂,起床啦!");
12             if (叫别人起床该干嘛干嘛 != null) //如果有人委托我什么
13             {
14                 叫别人起床该干嘛干嘛();
15             }
16             Console.WriteLine("室友:完事走人,晨跑去!");
17         }
18
19         public event 这是一个委托 叫别人起床该干嘛干嘛;
20     }
21
22     public class 要晨读的我
23     {
24         public void 起床晨读()
25         {
26             Console.WriteLine("我:哦,起来了!!!");
27             Console.WriteLine("我:一二三四五,上网看知乎,刷完知乎再晨读!");
28         }
29     }
30
31     public class 王八犊子
32     {
33         public void 赌五毛起不来()
34         {
35             Console.WriteLine("王八犊子:五毛拿走,劳资要碎觉!");
36         }
37     }
38
39     class Program
40     {
41         static void Main(string[] args)
42         {
43
44             var 中国好室友 = new 室友();
45             var 我 = new 要晨读的我();
46             var 王八犊子 = new 王八犊子();
47
48             //我先告诉室友:我要早起晨读
49             中国好室友.叫别人起床该干嘛干嘛 += 我.起床晨读;
50             //王八犊子来搅屎了
51             中国好室友.叫别人起床该干嘛干嘛 += 王八犊子.赌五毛起不来;
52             //于是第二天到了
53             Console.WriteLine("闹铃:早上七点钟...");
54             Console.WriteLine("系统提示:室友起床了!");
55             中国好室友.起床晨跑去();
56         }
57     }
58 }
时间: 2024-10-13 01:55:44

C#一个关于委托和事件通俗易懂的例子的相关文章

C#委托与事件学习笔记

今天跟随视频学习了一下C#中最重要的一些概念之委托与事件.老杨的视频讲的还是挺深入浅出,不过刚接触C#.NET的人还是朦朦胧胧,就像张子阳先生说的"每次见到委托和事件就觉得心里别(biè)得慌,混身不自在".跨过这道坎的人就有种一览众山小的感觉了.我又浏览了皱华栋老师JamesZou的博文<深入理解C#委托及原理>(地址:http://www.cnblogs.com/jameszou/archive/2011/07/21/2112497.html),以及张子阳Jimmy Z

委托和事件 (1) - 委托简析

个人认为,c#最重要的精髓在于其委托. 说实话现在已经是c#5.0的时代,c#6很快也要出来了,委托作为一个c#1就有的性质,已经早就被更高级的工具例如泛型委托,lambda表达式包装起来了,基本上已经很少有人会在程序中声明一个delegate.不过,了解一下基础也是很好的, 基本概念 委托是一个特殊的类(密封类),可以被视为函数指针,其代表一类和委托签名的输入输出变量类型和个数相同的方法.委托本身可以作为变量传入方法. 借用经典的greetPeople例子,在实际工作中,总会遇到类似的情况,即

浅谈C#委托和事件(转载)

委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本知识: 委托的定义委托的声明原型是 delegate <函数返回类型> <委托名> (<函数参数>)例子:public delegate void CheckDelegate(int number);//定义了一个委托CheckDelegate,它可以注册返回void类型且

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

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

javascript的事件冒泡,阻止事件冒泡和事件委托, 事件委托是事件冒泡的一个应用。

首先,弄明白js 当中,什么是事件,事件模型在js中是如何设计的.什么是事件冒泡? 什么是“事件冒泡”呢?假设这里有一杯水,水被用某种神奇的方式分成不同颜色的几层.这时,从最底层冒出了一个气泡,气泡会一层一层地上升,直到最顶层.而你不管在水的哪一层观察都可以看到并捕捉到这个气泡.好了,把“水”改成“DOM”,把“气泡”改成“事件”.这就是“事件冒泡” 什么是事件委托呢?event delegation : 地址:http://davidwalsh.name/event-delegate One

C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介

委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在.本文中,我将通过两个范例由浅入深地讲述什么是委托.为什么要使用委托.事件的由来..Net Framework中的委托和事件.委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论. 一.为什么要使用委托 委托的应用之一:将一个方法作

转:委托和事件详解

Delegate delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类.与其它的类不同,delegate类能够拥有一个签名(signature),并且它"只能持有与它的签名相匹配的方法的引用".它所实现的功能与C/C++中的函数指针十分相似.它允许你传递一个类A的方法m给另一个类B的对象,使得类B的对象能够调用这个方法m.但与函数指针相比,delegate有许多函数委托和事件在 .Net Framework中的应用非常广泛指针不具备的优点.首先,函数指针只能指

大白话系列之C#委托与事件讲解(一)

从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的.首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个意思,除非委托2个中文字不认识,举个例子,小明委托小张去买车票.       但是在我们的程序世界里,也是这么的简单吗?当然,什么是OO,OO就是现实世界的抽象,所有现实世界的事物,在OO里都能得到很好的诠释,不好意思,扯远了...... 那我们就单刀直入吧,如果同学们不嫌烦的话,可以看一下,网上中

c#委托与事件(一)

从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的随笔中,我会把这些概念说的通俗易懂的.首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个意思,除非委托2个中文字不认识,举个例子,小明委托小张去买车票.       但是在我们的程序世界里,也是这么的简单吗?当然,什么是OO,OO就是现实世界的抽象,所有现实世界的事物,在OO里都能得到很好的诠释,不好意思,扯远了...... 那我们就单刀直入吧,如果同学们不嫌烦的话,可以看一下,网上中文,英