• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            twzheng's cppblog

            『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              136 隨筆 :: 78 文章 :: 353 評論 :: 0 Trackbacks

            關(guān)于.net委托的一篇妙文

            作者:TomMax (笑望人生) 出處:csdn community

            有許多人問的,.Net中的委托以及事件處理。我拿簡單的例子說明一下,是現(xiàn)實中的例子:

            比如說一個公司(場景),你是老板,手下有兩個員工,小張和小王。
            你命令小王,如果小張玩游戲,則小王扣去小張500元錢。

            這就是現(xiàn)實中的委托。

            實際上,在寫程序中,程序員就是老板,小張和小王就是兩個對象。小張玩游戲是一個方法,小張還有一個游戲事件,他玩游戲激發(fā)這個事件。而小王就是事件處理對象,他負責(zé)把小張的錢扣除500。

            所以,委托有如下幾個要素:
            1 激發(fā)事件的對象--就是小張
            2 處理對象事件的對象--就是小王
            3 定義委托,就是你讓小王監(jiān)視小張。

            如果這三個要素都滿足的話,則你就寫出了一個完整事件的處理。

            下面有個例子:在vs.net2003 C#控制臺應(yīng)用程序編輯運行成功:
            using System;

            namespace CSharpConsole
            {
             public class 場景
             {
              [STAThread]
              public static void Main(string[] args)
              {
               Console.WriteLine("場景開始了....");
               // 生成小王
               小王 w = new 小王();
               // 生成小賬
               小張 z = new 小張();

               // 指定監(jiān)視
               z.PlayGame += new PlayGameHandler(w.扣錢);

               // 開始玩游戲
               z.玩游戲();

               console.writeline("場景結(jié)束...");
               Console.ReadLine();
              }
             }


             // 負責(zé)扣錢的人
             public class 小王
             {
              public 小王()
              {
               Console.WriteLine("生成小王...");
              }

              public void 扣錢(object sender,EventArgs e)
              {
               Console.WriteLine("小王:好小子,上班時間膽敢玩游戲...");
               Console.WriteLine("小王:看看你小子有多少錢...");
               小張 f = (小張)sender;
               Console.WriteLine("小張的錢: " + f.錢.ToString());
               Console.WriteLine("開始扣錢......");
               System.Threading.Thread.Sleep(500);
               f.錢 = f.錢 - 500;
               Console.WriteLine("扣完了....現(xiàn)在小張還剩下:" + f.錢.ToString());
              }
             }

             // 如果玩游戲,則引發(fā)事件
             public class 小張
             {
              // 先定義一個事件,這個事件表示“小張”在玩游戲。
              public event PlayGameHandler PlayGame;
              // 保存小張錢的變量
              private int m_Money;

              public 小張()
              {
               Console.WriteLine("生成小張....");
               m_Money = 1000; // 構(gòu)造函數(shù),初始化小張的錢。
              }

              public int 錢 // 此屬性可以操作小張的錢。
              {
               get
               {
                return m_Money;
               }
               set
               {
                m_Money = value;
               }
              }

              public void 玩游戲()
              {
               Console.WriteLine("小張開始玩游戲了.....");
               Console.WriteLine("小張:CS好玩,哈哈哈! 我玩.....");
               System.Threading.Thread.Sleep(500);
               System.EventArgs e = new EventArgs();
               OnPlayGame(e);
              }

              protected virtual void OnPlayGame(EventArgs e)
              {
               if(PlayGame != null)
               {
                PlayGame(this,e);
               }
              }
             }

             // 定義委托處理程序
             public delegate void PlayGameHandler(object sender,System.EventArgs e);

            }

            posted on 2007-05-12 20:00 譚文政 閱讀(274) 評論(0)  編輯 收藏 引用 所屬分類: vc++.net
            久久久久久a亚洲欧洲aⅴ| 久久996热精品xxxx| 国内精品九九久久久精品| 热99re久久国超精品首页| 久久精品无码一区二区三区免费 | 久久久午夜精品| 久久久久人妻精品一区二区三区| 青青青国产成人久久111网站| 午夜精品久久久久久影视riav| 久久精品国产第一区二区三区| 狠狠久久综合| 久久国产亚洲高清观看| 免费精品久久天干天干| 国产激情久久久久影院老熟女| 亚洲av日韩精品久久久久久a| 久久强奷乱码老熟女网站| 国产精品99久久99久久久| 色青青草原桃花久久综合| 久久99精品国产麻豆婷婷| 久久精品国产69国产精品亚洲| 久久AV高潮AV无码AV| 久久亚洲AV永久无码精品| 久久久青草青青亚洲国产免观| 欧美噜噜久久久XXX| 一本大道久久香蕉成人网| 久久九九久精品国产免费直播| 久久久久久毛片免费播放| 99精品久久精品一区二区| 怡红院日本一道日本久久 | 久久精品国产亚洲av高清漫画| 中文精品99久久国产| 久久天天躁狠狠躁夜夜2020| 亚洲狠狠综合久久| 久久久国产精品网站| 国产成人精品久久免费动漫| 久久狠狠高潮亚洲精品| 精品免费久久久久久久| a级成人毛片久久| 久久精品国产亚洲沈樵| 伊人热人久久中文字幕| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 |