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

iDotNetSpace發表於2009-10-12
最近在學習委託和事件,在書店裡面看了好多書,但是都是迷迷的…… 今天在部落格園裡面看到了 張子陽 所寫的部落格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 

原文地址:http://www.cnblogs.com/ipwjh/archive/2009/10/08/1578947.html 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-616326/,如需轉載,請註明出處,否則將追究法律責任。

相關文章