国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[C#]委托實例分析(附源碼)

2019-11-17 02:43:01
字體:
來源:轉載
供稿:網友

[C#]委托實例分析(附源碼)

  一直都聽說C#中的委托與事件非常重要,都沒有什么切身的體會,而這次通過做一個WinForm二次開發的項目才真正感覺到了委托與事件的犀利之處。

1.C#中的事件和委托的作用?
  事件代表一個組件能夠被關注的一種信號,委托是可以把一個過程封裝成變量進行傳遞并且執行的對象。
2.他們之間的關系?
  委托是一種類型,事件是一種成員,就相當于public int Age {get;set;}這個屬性中,int就是類型,Age是一個成員,public event EventHandler Push;這個事件中EventHandler就是委托類型,Push是事件,他是一個成員。
  事件從本質上來說是委托,不過在使用上比委托多了一個限制:事件只能在定義事件的類內部被調用,而委托可以在任意方法中被調用(難就難在理解這句)。
  我們基本上可以說:事件是委托,委托是方法指針,在調用委托的時候跟調用方法是一樣的。一般來說,這個限制正好用在封裝組件類的時候體現了封裝特性。
3.和什么情況使用委托和事件?  事件是組件中的抽象概念,同樣包括狀態和操作也是組件中的概念,對應到C#里面就是屬性和方法。所以像控件之類的組件都會有事件。而委托代表一個代碼的執行過程,C#3.0引入linq以后,用的就非常頻繁了。
4.但是用事件的方式來調用的話有什么好處?  事件是一種封裝,就好像屬性會封裝字段一樣,可以把定義和實現隔離開來,給你舉個例子就是DateTime實際上你看那么多屬性,其實里面只有一個字段存儲時間,各種日期啊年啊屬性都是根據這個時間算出來的。事件也把內部類型為一個委托的字段封裝起來,這樣在類的外部就只能使用事件來注冊或者注銷事件關注,而不能引發事件。

實例:  我們要達到這樣的效果:  

就是點擊Form3中的數字選框時使Form1中的文本框聯動那么可以使用委托來完成:第一步:在Form3.cs中定義委托與事件:
        //定義帶參數的委托與兩個事件        //這是委托與事件的第一步        public delegate void Form2Handle(string s);        public event Form2Handle changed;    

 第二步:在Form1.cs中將方法注冊到委托上:

        //改變值的事件        PRivate void changed(string s)        {            //此處是給原有窗體中控件賦值            this.textBox1.Text = s + s;        }        private void button2_Click(object sender, EventArgs e)        {            Form3 frm3 = new Form3();            //這是委托與事件的第二步,            //寫到+=時,按兩次Tab鍵會自動生成frm2_changed,frm3_empty兩個事件            frm3.changed += new Form3.Form2Handle(changed);//改變值的事件            frm3.ShowDialog();        }        

  第三步:在Form3.cs中使用委托:

            //這是委托與事件的第三步            //傳值            changed(numericUpDown1.Value.ToString());    
代碼下載:委托與事件實例.rar

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽宁省| 屯昌县| 兴山县| 萨嘎县| 杨浦区| 江陵县| 隆林| 安阳市| 陇川县| 江阴市| 林西县| 剑川县| 剑河县| 汝州市| 郸城县| 漳浦县| 阜南县| 城固县| 汶上县| 枣庄市| 克拉玛依市| 赤城县| 汶上县| 四川省| 密云县| 句容市| 胶南市| 浏阳市| 山丹县| 凌海市| 浮梁县| 霍山县| 历史| 曲松县| 石首市| 富川| 肃宁县| 东兰县| 澄城县| 宁武县| 进贤县|