<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      將不確定變成確定~我想監視我的對象,如果是某個值,就叫另一些方法自動運行

      回到目錄

      名稱有點饒,不是很好理解,但我喜歡這種大白話,不喜歡書所翻譯過來的話,呵呵!

      今天要把一個不確定的問題解決,問題是:一個程序中,有一個屬性,如果它為true時,我希望把另一些方法自動運行,這是可以通過訂閱事件來實現的,對嗎?經過我的測試確實是這樣的,呵呵。

      事件一個一直叫我們頭痛的話題,一個能不用就不用的東西,我們程序員為什么那么怕“事件”呢?我來分析幾個原因

      1 對本身的概念不是很理解

      2 對它的作用不是很清晰,可能書上說不到點上,個人認為

      3 平時用的少,所以對它更加陌生

      今天,我就和大家一起再學習一個C#的事件

      一說事件,就不行不說委托,這兩者到底是什么關系呢,在我看來,委托就是一個類,而事件就是這個類的一個實例,呵呵,這樣大家就容易理解了吧

      事件由事件數據源,事件所發生的類和事件訂閱者們組成,“事件訂閱者們”就是說,一個事件可以被多個訂閱都訂閱。

      開始寫代碼了,代碼最能說明問題:

      事件源類:

      
      
       1  /// <summary>
       2   /// 事件源
       3   /// </summary>
       4   internal class KeyEventArgs : EventArgs
       5   {
       6       private char keyChar;
       7       public KeyEventArgs(char keyChar)
       8           : base()
       9       {
      10           this.keyChar = keyChar;
      11       }
      12 
      13       public char KeyChar
      14       {
      15           get
      16           {
      17               return keyChar;
      18           }
      19       }
      20   }
      
      

       

       

      一都是以EventArgs 結尾的,其中EventArgs 本身它是所有事件源類的基類,它不提供任何事件源信息,如果有個性化的事件信息,需要去派生它

      接下來看,發生事件的類,我們的事件就在這里發生,在什么時候,什么情況下發生,都來自這里。

       
       1  /// <summary>
       2     /// 事件發生的類
       3  /// </summary>
       4     internal class KeyInputMonitor
       5     {
       6         // 創建一個委托,返回類型為avoid,兩個參數
       7         public delegate void KeyDownEventHandler(object sender, KeyEventArgs e);
       8         // 將創建的委托和特定事件關聯,在這里特定的事件為OnKeyDown
       9         public event KeyDownEventHandler OnKeyDown;
      10 
      11         public void Run()
      12         {
      13             bool finished = false;
      14             do
      15             {
      16                 Console.WriteLine("Input a char");
      17                 string response = Console.ReadLine();
      18 
      19                 char responseChar = (response == "") ? ' ' : char.ToUpper(response[0]);
      20                 switch (responseChar)
      21                 {
      22                     case 'X':
      23                         finished = true;
      24                         break;
      25                     default:
      26                         // 得到按鍵信息的參數
      27                         KeyEventArgs keyEventArgs = new KeyEventArgs(responseChar);
      28                         // 觸發事件
      29                         OnKeyDown(this, keyEventArgs);
      30                         break;
      31                 }
      32             } while (!finished);
      33         }
      34     }
      
      

       

      功能就是輸入一個字符,當為X時,退出,當不為X時,去觸發一個事件,事件源數據為“輸入的字符”
      到這里,這個事件還沒有任何功能,就相當于,我去賣東西,東西已經擺在臺上了,但還沒有人來買,好,現在是時候有顧客來了
       1  /// <summary>
       2     /// 顯示中文的接收類
       3  /// </summary>
       4     internal class EventReceiverForChina
       5     {
       6         public EventReceiverForChina(KeyInputMonitor monitor)
       7         {
       8             // 產生一個委托實例并添加到KeyInputMonitor產生的事件列表中
       9             monitor.OnKeyDown += new KeyInputMonitor.KeyDownEventHandler(this.Echo);
      10         }
      11         private void Echo(object sender, KeyEventArgs e)
      12         {
      13           Console.WriteLine("您輸入的字條是: {0}", e.KeyChar);
      14         }
      15     }

       

      這里訂閱事件時,我們使用+=就可以了,事實上就是建立一個委托類型的新事件實例而以。

      在前臺調用時,可以這樣:
      
      
      1         // 實例化一個事件發送器,并聲明一個EventReceiverForChina類型的訂閱者
      2   KeyInputMonitor monitor = new KeyInputMonitor();
      3   EventReceiverForChina eventReceiverForChina = new EventReceiverForChina(monitor);
      4  monitor.Run();
      
      

       

      
      
      運行的結果就是當你去Run()時,eventReceiverForChina 類型時的某個方法也被執行了,怎么樣,實現了我們今天的話題了吧,其實這就是事件的訂閱機制,事實上在軟件開發中非常有用。
      需要注意的是,一般事件的返回類型都是void,當然,這也是很正常的,因為事件就是去做某些事件,它不知道管后果的。呵呵。
      祝您晚——來個好夢吧!
      回到目錄
      posted @ 2012-03-17 00:08  張占嶺  閱讀(880)  評論(2)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品一区二区三天美| 中文字幕日韩国产精品| 深田えいみ禁欲后被隔壁人妻| 亚洲AV日韩AV激情亚洲| 中宁县| 亚洲中文字幕无码爆乳app| 国产精品视频亚洲二区| 欧美无人区码suv| 亚洲精品视频一二三四区| 亚洲国产欧美一区二区好看电影| 竹山县| 真人无码作爱免费视频| 久青草国产在视频在线观看| 国产91午夜福利精品| 中文字幕精品人妻丝袜| 东京热一精品无码av| 人妻少妇精品中文字幕| 九九久久精品国产免费看小说| 无码一区二区波多野结衣播放搜索| 中文字幕人妻日韩精品| 人妻中文字幕一区二区三| 麻豆精品一区二区综合av| 章丘市| 成人资源网亚洲精品在线| 亚洲V天堂V手机在线| 国产偷国产偷亚洲清高APP| 九九综合va免费看| 亚洲精品成人老司机影视| 四虎成人精品无码永久在线 | 亚洲伊人久久综合影院| jizzjizz少妇亚洲水多| 亚洲一区二区三区日本久久| 一区二区三区成人| 日韩乱码卡一卡2卡三卡四| 亚洲欧美日韩在线码| 亚洲日韩精品无码一区二区三区| 亚洲国产成人无码av在线播放| 亚洲欧美一区二区成人片| 国产精品一区二区三区四区| 少妇人妻系列无码专区视频| 天天看片视频免费观看|