委托
1、 什么是委托?
委托就是具有相同簽名和返回值類型的有序方法列表
它定義了方法的類型,使得可以將方法當作另一個方法的參數來進行傳遞
- 是一種引用類型
- 方法的列表稱為調用列表
- 當委托被調用時,它調用列表中的每個方法
如圖:
2、 委托的聲明
先來看看委托是如何聲明的
a、委托類型的聲明看上去與方法的聲明很類似,有返回類型和簽名。返回類型和簽名指定了委托接受的方法的形式
b、委托類型與方法聲明的不同之處:
▲ 委托是以關鍵字delegate開頭的
▲ 委托沒有方法主體
3、 委托的應用
給大家寫個簡單易懂的實例,看完就知道委托時怎么一回事了
先創建兩個窗體Form1和Form2,點擊Form1中的按鈕彈出Form2,可以在Form2中點擊按鈕改變Form1的背景色
接下來,我們來看看里面的具體代碼,看看用委托是如何實現的
Form1里面的代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace delegateWindowsForms { //首先聲明一個無返回值、無參數的委托 public delegate void MyDel(); public partial class Form1 : Form { public Form1() { InitializeComponent(); } //打開第二個窗口 private void button1_Click(object sender, EventArgs e) { MyDel del = new MyDel(ChangeColor); //實例化一個委托,把改變顏色的方法放到容器里面 del += ChangeButtonText;//再向容器里添加改變按鈕標題的方法 Form2 frm2 = new Form2(del); //把委托擋着參數,傳給frm2。這樣frm2就可以調用了 frm2.ShowDialog(); } //改變第二個窗口背景顏色為紅色 public void ChangeColor() { this.BackColor = Color.Red; } //改變“改變第一個Form”的名稱為”騷年,我已經變色了“ public void ChangeButtonText() { this.button1.Text = "騷年,我已經變色了"; } } }
Form2里面的代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace delegateWindowsForms { public partial class Form2 : Form { MyDel delChange; public Form2(MyDel del) { InitializeComponent(); this.delChange = del; } //顏色改變按鈕的點擊事件 private void button1_Click(object sender, EventArgs e) { delChange(); //委托調用 } } }
運行代碼,點擊Form1中的按鈕,彈出Form2,
在Form2中點擊改變Form1顏色按鈕,可以發現,Form1的背景色瞬間變為紅色,並且“改變第一個Form”的名稱變為”騷年,我已經變色了“
這樣我們就跨窗體操作了控件。
仔細觀察以下兩句代碼我們可以知道,如何向委托這個容器添加方法。
當實例化委托后,我們可以用“+=”向委托里面繼續添加方法;
如代碼中所寫:
MyDel del = new MyDel(ChangeColor); //實例化一個委托,把改變顏色的方法放到容器里面
del += ChangeButtonText;//再向容器里添加改變按鈕標題的方法
小結:委托是面向對象的,它定義方法簽名的類型,可以與具有兼容簽名的任何方法關聯。
我們可以通過委托調用方法。委托用於將方法作為參數傳遞給其他方法。
![]()
歡迎關注訂閱我的微信公眾平台【熊澤有話說】,更多好玩易學知識等你來取
作者:熊澤-學習中的苦與樂 公眾號:熊澤有話說 出處:https://www.cnblogs.com/xiongze520/p/10238530.html 創作不易,任何人或團體、機構全部轉載或者部分轉載、摘錄,請在文章明顯位置注明作者和原文鏈接。
|