委託非同步方式
event
在以前我學習c#時,有一天看到了delegate
,發現這玩意挺好用,和函式指標一樣,之後又出來了個event
,我當時真的沒明白為什麼需要這個event
,有點畫蛇添足。
delegate
英文直譯委託
,理解它其實很簡單,在理解它之前,我們看看如何使用它。
首先我們需要宣告
乙個委託
。
宣告委託
其實和宣告函式
是一樣的,唯一的區別在於前面多了個delegate
關鍵字(雖然c#裡沒法單純的宣告函式)。
學過c的小夥伴可以把它當做乙個函式指標宣告。
delegate
void
mydelegate
(string str)
;
我們使用類建立物件的時候是類名 變數名 = new 類名
。
使用委託時也是一樣,不過它和c#中對類建立物件不同,它具有顯式
和隱式
兩種方式使用。
using system;
namespace example
static
void
main
(string
args)
}}
上面的栗子會輸出:
hello
hi
你以為它只能充當函式指標
或者匿名函式
的功能那可就錯了,它可以不停的加入新的function(也可以移除)
,這玩意還能這樣用:
using system;
namespace example
static
void
testfunc2
(string str)
我是2號"
,str);}
static
void
main
(string
args)
}}
上面的栗子會輸出:
hello
hello 我是2號
func
和action
是c#中宣告好的泛型委託
,為了我們使用方便。其定義如下:
public
delegate tresult func
,out
tresult
>
(t arg)
;//以此類推
public
delegate tresult func
<
int1,in
t2,outtresult
>
(t1 arg1,
t2 arg2)
;public
delegate
void
action
>
(t obj)
;//以此類推
public
delegate
void
action
<
int1,in
t2>
(t1 arg1,
t2 arg2)
;
可以看見func
其實就是帶返回值
得委託,action
是無返回值
的委託。
使用栗子:
using system;
namespace example
static
void
myaction
(string str)
",str);}
static
void
main
(string
args)
}}
上面的栗子會輸出:
傳給我的是10
委託
還可以非同步執行
,但是需要注意:非同步
執行委託只能有乙個目標
,不能+=
新增多個目標。
使用:
using system;
namespace example
static
void
main
(string
args)}}
}
using system;
namespace example
static
void
oncallback
(iasyncresult res)
static
void
main
(string
args)
}}
當時看到event
時,我覺得這是個畫蛇添足的東西,因為單純的delegate
已經能用,為什麼要用event delegate
?
使用event
是為了封裝性
,讓其在外部只能新增或移除
,但是無法在類外直接呼叫
,僅僅就是這個作用而已。
using system;
namespace example
}class
observer
public
void
notify
(string str)
", str,
this
.name);}
}}
使用:
namespace example
}}
上面的栗子會輸出:
哈嘍 1號觀察者
哈嘍 2號觀察者
哈嘍 3號觀察者
哈嘍 4號觀察者
哈嘍 5號觀察者
我理解的委託 delegate
2 主體內申明使用 的方法 public void myfunction 被附體的 申明 被附體的方法 準備二 1 主體外寫準備附體的方法,上面申明的引數和返回值一致 private void 準備附體的方法1 int inttemp 你也可以這樣申明 private void 準備附體的方法2 i...
C 我理解的委託Delegate
一直以為委託很難,可能是自己太菜,覺得很不好理解。直到我今天需要將方法作為乙個引數傳遞,我才有興趣去看委託怎麼用。先說定義 委託是使用者自定義的類,它定義了方法的型別。儲存的是一系列具有相同引數和返回型別方法的位址列表,呼叫委託時,此委託列表的所有方法都將被執行。我理解的很直白的說,委託就是乙個中間...
我是如何理解人脈的
上了大學之後,發現身邊乙個神奇的現象 原來 兩耳不聞窗外事一心唯讀聖賢書 的窮酸學生,一旦進入了大學的校門,竟在一夜之間變成了張口人脈 閉口關係的小大人模樣,彷彿不認識幾個學生會幹部 不參加幾個社團都不好意思見人了。這也難怪,在大學這個小社會裡,大到學生幹部的選拔 獎學金助學金的評選,小到舍友之間的...