之前剛接觸winform這東西的時候,需要實現一個數據回顯的功能,也就是將執行結果顯示在控件上。當時涉及到了多線程的場景,所以,我最初的設想就是線程得到執行結果后,直接調用控件添加一個Item,雖然我是這么想的,但是人家編程語言顯然不是這么想的,當場告訴我線程間操作無效,它無效,我笑了... ...
當時果斷選擇求助於搜索引擎,在一番cv操作之后,功能實現了,今天恰好時間充裕,決定將c#好好重新捋一遍,當時為了盡快完成工作,心浮氣躁,草草看了些文檔就開始搞起來,如今回想起那個數據回顯的功能,用到的技術就是c#中的委托。簡單來說,就是既然不允許直接調用某個方法,那么,就使用委托來調用該方法,下面簡單記錄一下我對這個技術的理解。
委托
作用:
就是引用某個方法,我們可以通過委托來調用某個方法。
使用步驟:
- 聲明
- 實例化
- 使用
關鍵字:
delegate
示例如下:
class Program {
//聲明委托,委托的形參列表和返回值類型必須與所要調用的方法一致 public delegate byte[] dele (int i); static void Main(string[] args) {
//實例化委托,實例化的參數為該委托調用的方法 dele de = new dele(IntForMatter.IntToByte);
//使用委托調用方法 byte[] res = de(85596); foreach (byte r in res) { Console.WriteLine(r); } } }
用於測試委托的代碼:
class IntForMatter { public static byte[] IntToByte (int parm) { byte[] res = new byte[4]; for (int i = 0; i < 4; i++) { res[i] = (byte)(parm >> (i * 8) & 0xff); } return res; } }
(請忽略代碼中不規范的命名方式... ...)