自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

對委托在C#異步委托和多線程中的理解

開發(fā) 后端
對委托在C#異步委托和多線程中的理解主要是向你介紹了委托的概念和實際的應用。C#異步委托之委托是如何發(fā)揮作用的呢?那么本文就向你講解這方面的內容。

談到對委托在C#異步委托和多線程中的理解,在實際的開發(fā)過程中是怎么樣的呢?讓我們開始吧:

關于這個問題,我想很多初學者跟我一樣有很多疑問吧。下面我說的內容也許不正確,我在這里真的很希望大家能夠指正,因為我講的只是我自己的理解。

其實異步委托跟多線程在C#編程上是沒有關系的。我做了一個Sample,我實在沒看到任何地方寫上了CreateThread這樣的語句,但是卻能達到異步的效果,也許,系統(tǒng)將處理的線程隱藏了,由操作系統(tǒng)管理,而不希望用戶太多地介入,從而導致混亂。

C#異步委托之委托的理解

在這里我想重新提一下什么是委托,msdn上說得似乎有點晦澀,這個也不怪他們。我有一個同學是在微軟做翻譯的,呵呵。很多翻譯工作其實并不是由長期從事開發(fā)的人寫的,而是一些大學畢業(yè)生或者英語比較好的人(小笑一下,本人在vs 2005 beta的時候曾經幫導師翻譯msdn,自我感覺翻譯的比后來的微軟翻譯的好)。Ok,言歸正傳,委托其實就等于C++里面的函數指針,是指向函數地址的變量。我想,也許是為了更加面向對象,并且避免指針的濫用而導致系統(tǒng)錯誤,C#引用了委托這個概念。其實不管是事件,還是委托,大家都可以把它們看成跟類一樣的東西,都需要聲明,都需要進行實例化,并且其實例可以看成引用類型的對象。這樣的話,更加容易理解很多覺得很神秘的東西。

C#異步委托之委托就是聲明一個“函數指針”,但這個“指針”必須要聲明其指向函數的形式,也就是說,我如果聲明委托為:

  1. public delegate void BinaryDelegate(int startIndex, int count); 

那么,這個委托只能指向“返回值是void,參數分別為int startIndex, int count”的函數。

Ok,是否這樣就可以使用委托了呢?當然不可以啦,前面已經說過,C#是純面向對象的語言,它一定不能有指針,并且,我也說過了在C#中,像委托或者事件什么的,我們其實都可以看成是引用類型的變量,所以,在使用之前要實例化,只有實例化才能被稱為對象,否則只是提出了一個概念,不能實際應用。例如,我們提出“人類”(human)這個概念,但是只有實例化了“人類”->“張三”,這個“張三”才能被驅使,比如我叫張三去端水。我不能叫“人類”去端水。

C#異步委托之委托的應用

  1. BinaryDelegate addingDelegate = new BinaryDelegate(AddingFunction); 

請注意,實例化的參數(相當于構造函數的參數)只能是函數名稱,這個函數名稱是不能帶參數的(是不是跟C++的函數指針一樣呢?)。所以,如果一旦實例化委托,那么就必須在其作用域(類內部或者外部)內有其委托指明的函數存在,否則在編譯時報錯。

C#異步委托之委托的基本內容就向你介紹到這里,希望對你了解和學習C#異步委托之委托有所幫助.

【編輯推薦】

  1. 淺析C#異步操作
  2. 描述C#異步Socket
  3. C# Socket異步通訊實現詳解
  4. C#異步編程模式IAsyncResult淺析
  5. 基于事件的C#異步編程模式淺析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-20 18:37:52

委托C#異步委托

2009-09-08 15:28:24

C#委托

2010-12-22 10:21:17

C#基礎

2009-09-08 16:25:19

C#委托

2024-10-05 00:00:35

Action?C#Func?

2024-05-30 12:24:03

C#開發(fā)

2009-08-21 11:24:16

C#異步調用

2009-10-20 16:48:30

C#委托

2024-09-29 09:28:38

Action?C#

2024-05-16 13:36:04

C#委托事件

2009-08-18 10:35:26

C#委托

2009-08-27 16:53:01

C#委托C#事件

2009-08-03 13:23:04

C#編程組件-事件-委托

2024-05-15 09:11:51

委托事件C#

2024-12-23 08:00:00

委托C#編程

2009-08-21 11:31:59

異步和多線程的區(qū)別

2009-08-18 10:54:17

C#事件和委托

2011-04-22 09:14:26

C#委托

2011-08-29 10:35:53

反射方式C#

2009-08-26 14:27:54

C#委托和事件
點贊
收藏

51CTO技術棧公眾號