淺析C#委托和事件實例探討
對于C#委托和事件,大家看的書或者其他文章都很多。本文將從作者的一個實際例子出發,讓大家來共同探討C#委托和事件的作用,并更好的理解。
最近在學習委托和事件,在書店里面看了好多書,但是都是迷迷的。今天在博客園里面看到了張子陽所寫的博客C#中的委托和事件:http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx 看后對委托和事件有了一個新的認識,可以是沒有用到實際項目中去吧,感覺還是有點不知……
下面我起一個拋磚引玉作用讓這兩天在書中看到的,及看張子陽博客和寫的一個和他類似的程序……
當第一次聽到委托、事件時感覺比較抽象、很好奇,當看到老師在課堂上利用委托和事件實現兩個窗體調用時、感覺委托太神奇了,呵、不廢話了……
C#委托和事件在做程序是很常見到的,對于像我這樣的接觸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();
- }
- }
- }
感覺自己知道的太少了、對委托和事件、泛型、接口 這些語法理解太淺了、甚至都不理解!呵,學起來也比較困難,但又不能不去看、不去學、那樣都無法往下去學習其他的! 希望像我這樣的迷茫者可以多看一下博客園的老人們寫的經典博客,多看看一書……。如果大家們有更好學習方法,可以寫出來,交流一下,,這樣的文章放到首頁可能會不合適……
原文標題:C#中的委托和事件-拋磚引玉
鏈接:http://www.cnblogs.com/ipwjh/archive/2009/10/08/1578947.html
【編輯推薦】