C#中的委托和事件-拋磚引玉

作者: 孤冰  來源: 博客園  發布時間: 2009-10-10 17:02  閱讀: 1741 次  推薦: 0   原文鏈接   [收藏]  
  最近在學習委托和事件,在書店里面看了好多書,但是都是迷迷的…… 今天在博客園里面看到了 張子陽 所寫的博客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
0
0
 
標簽:ASP.NET
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()