C#中的委托和事件-抛砖引玉

  最近在学习委托和事件,在书店
里面看了好多书,
但是都是迷迷的…… 今天在博客园里面看到了 张子阳 所写的博客C#中的委托和事件:http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.
aspx  看后对委托和事件有了一个
新的
认识,可以是没有用到实际项目中去吧,感觉还是
有点不知……   

  下面我起一个抛砖引玉作用让这
两天在书中看到的,及看张子阳博客和写的一个和他类似的程序……

  当第一次听到委托、事件时感觉比较抽象、很好奇,当看到老师在课堂上利用委托和事件实现两个窗体调用时、感觉委托太神奇了,呵、不废话了……
  委托和事件在做程序是很常见到的,对于像我这样的接触C#不是很长的光会去用,但不知道他里面的含义及本质、想理解他还是有一点困难的,下面有两个例子大家可以看一下

public delegate void Mydelegate(string name); //定义一个委托

class Program

{

public static void show(string name)

{

Console.WriteLine(name);

}

static void Main(string[] args)

{

Mydelegate My = show;  //利用遇他相对应的方法来实例化委托 

 My("呵呵");        //调用委托

Console.ReadKey();

}

}

  呵呵,这个小例子是定义一个委托,通过与他相对应的方法来实例化委托,然后调用委托,实现方法。
  下面一个例子是我看过张子阳博客后写的,本人英语不是太好、可能里面定义会有些……

using System;

using System.Collections.Generic;

using System.Text;

namespace ConsoleApplication7

{

//我们来模拟一个打字智能机,他有三部分构成:在键盘上面输入文字、输出在显示器、

语音提示;如果要实现这三种操作必须需要三种不同的硬件,
所以

//键盘只能实现打字、显示器实现输出,语单提示设备实现读出文字。

所以我们应该让他们看成三种不同的对象,来实现程序!

//定义三个类,Smart(智能机类),Typing(打字方法),show(显示方法),

MakyVoice(语音提示方法)

//键盘打字

public class Smart

{

public delegate void SmartDelegate(char T);//定义一个委托

public event SmartDelegate SmarEvent;//定义实现这个委托的事件

public char T;//相当于你每一次打的单个文字

//定用一个字符串相当于我们从键盘上打出来的文字……

public string Text = "好好学习,天天向上";

public void Typing()

{

foreach (char t in Text)

{

T = t;

if (SmarEvent != null)

{

SmarEvent(T);

}

}

}

}

//显示输出

public class Display

{

public void show(char T)

{

Console.WriteLine(T);

}

}

//语言提示

public class Voice

{

public void MakyVoice(char T)

{

Console.WriteLine("您输出了:" + T);

}

}

class Program

{

static void Main(string[] args)

{

Smart S = new Smart();

Display D = new Display();

Voice V = new Voice();

S.SmarEvent+=new Smart.SmartDelegate(D.show);

S.SmarEvent+=new Smart.SmartDelegate(V.MakyVoice);

S.Typing();

Console.ReadKey();

}

}

}    感觉自己知道的太少了、对委托和事件、泛型、接口 这些语法理解太浅了、甚至都不理解!呵,学起来也比较困难,但又不能不去看、不去学、那样都无法往下去学习其他的!  希望像我这样的迷茫者可以多看一下博客园的老人们写的经典博客,多看看一书。

  可以看一下张子阳的博客,很不错、初学者应该去看:http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

时间: 2024-10-10 13:46:07

C#中的委托和事件-抛砖引玉的相关文章

C#中的委托和事件(续)

转自 http://www.cnblogs.com/JimmyZhang/archive/2008/08/22/1274342.html 源码下载:http://www.tracefact.net/SourceCode/MoreDelegate.rar C#中的委托和事件(续) 引言 如果你看过了 C#中的委托和事件 一文,我想你对委托和事件已经有了一个基本的认识.但那些远不是委托和事件的全部内容,还有很多的地方没有涉及.本文将讨论委托和事件一些更为细节的问题,包括一些大家常问到的问题,以及事件

C# 中的委托和事件

转自 http://www.cnblogs.com/jimmyzhang/archive/2007/09/23/903360.html  欢迎浏览本文的后续文章: C#中的委托和事件(续)PDF 浏览:http://www.tracefact.net/Document/Delegates-and-Events-in-CSharp.pdf文中代码在VS2005下通过,由于VS2003(.Net Framework 1.1)不支持隐式的委托变量,所以如果在一个接受委托类型的位置直接赋予方法名,在VS

【转】【UNITY3D 游戏开发之七】C# 中的委托、事件、匿名函数、LAMBDA 表达式

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/unity3d-game/1613.html       Unity3d 开发中,常用的莫过于委托和事件了,所以转载一篇相关文章,写的比较详细的,这里分享一下.      对于匿名函数以及Lambda表达式也是非常常用的,这里就直接分享链接,童鞋们自行学习.     匿名函数.Lambda表达式:http://www.cnblogs.com/

浅谈C# 中的委托和事件_C#教程

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

艾伟:C# 中的委托和事件

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

通过IL分析C#中的委托、事件、Func、Action、Predicate之间的区别与联系

一直以来都是对于事件与委托比较混淆,而且不太会用.找了个时间,总结了一下,感觉清晰了很多. 先说一下个人理解的结论吧:       delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类.      delegate声明的变量与delegate声明的事件,并没有本质的区别,事件是在delegate声明变量的基础上包装而成的,类似于变量与属性的关系(在IL代码中可以看到每一个delegate声明的事件都对应是私有的delegate声明的变量),提升了安全性.       A

Winform中的委托与事件实例

首先定义一个继承EventArgs类的类,其中包涵自己要传递的数据,类中的属性都是用来传递数据的:  代码如下 复制代码  EventArgs     public class FormulaSetEvent:EventArgs     {         public string _name { set; get; }         public string _formula { set; get; }         public int _select { set; get; }  

C#中委托,事件理解入门

目录 l        导论 l        什么是委托 l        事件的理解 l        事件 关键字 l        最后     导论     在学习C#中的委托和事件过程中,我读了许多文章来理解他们二者究竟是怎么一回事,以及如何使用他们,现在我将整个的理解过程陈述以下,我学到的每一方面,恐怕也是你们需要掌握的 :-). 什么是委托?     委托和事件这两个概念是完全配合的.委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成.委托是一个类,当你对它实例

ASP.NET中实现定制自己的委托和事件参数类_实用技巧

本文实例讲述了ASP.NET中实现定制自己的委托和事件参数类的方法,对于学习ASP.NET有很好的参考借鉴价值.具体方法如下: 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件的事件,在引发事件时传递的参数为EventArgs.Empty,如下所示: OnTextChanged(EventArgs.Empty); 这是因为控件KingTextBox的TextChanged事件比较简单,这里不需要参数对象传递数据.但像一些复杂的控件比如GridView的按钮命令事