



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C#關(guān)于Func和Action委托的介紹詳解輸出結(jié)果:
由于btn_Click為點(diǎn)擊事件,點(diǎn)擊第二次(第二次點(diǎn)擊會(huì)再次向委托添加事件)的數(shù)據(jù)結(jié)果如下:
因此,向委托添加事件時(shí),一個(gè)事件僅添加一次即可,若進(jìn)行多次添加則調(diào)用委托時(shí)會(huì)將添加進(jìn)入委托的所有事件進(jìn)行調(diào)用,無論該事件是否已添加都會(huì)進(jìn)行調(diào)用,故做如下處理(在構(gòu)造函數(shù)中或在程序啟動(dòng)時(shí)添加委托事件):
上圖中委托調(diào)用時(shí)提示波浪線,因?yàn)槭俏性谡{(diào)用時(shí)可能未添加事件,將會(huì)拋出:未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例的異常信息,
異常信息:
故調(diào)用時(shí)進(jìn)行異常處理或做如下處理:
處理方案1:
privatevoidbutton1_Click(objectsender,EventArgse)
Action_0.Invoke();
Action_1.Invoke(666);
Action_2.Invoke(666,888.0);
Action_3.Invoke(666,888,"HelloWorld");
處理方案2
//執(zhí)行委托
privatevoidbutton1_Click(objectsender,EventArgse)
Action_0.Invoke();
Action_1.Invoke(666);
Action_2.Invoke(666,888.0);
Action_3.Invoke(666,888,"HelloWorld");
catch(Exceptionex)
MessageBox.Show("調(diào)用出現(xiàn)異常","提示");
此時(shí),我們已經(jīng)學(xué)會(huì)了Action委托的簡(jiǎn)單使用,這時(shí)會(huì)有人考慮到,我想調(diào)用完返回信息Action委托并沒有返回,會(huì)限制我們的使用,不要著急,我們系統(tǒng)已經(jīng)幫我們準(zhǔn)備了一個(gè)現(xiàn)成的委托類型Func,下面我們對(duì)Func做個(gè)介紹。
2.Func委托
話不多說,上代碼,以下我們定義了包含兩個(gè)參數(shù)int和double,返回值為string類型的Func委托,并添加了兩個(gè)事件Fun_1和Fun_2:
publicpartialclassForm1:Form
///summary
///包含兩個(gè)參數(shù)int和double,返回值為string類型委托
////summary
privateeventFuncint,double,stringTestFunc;
///summary
///定義委托的事件
////summary
privatestringFun_1(intnInt,doubledDouble)
Console.WriteLine($"參數(shù)值:{nInt},{dDouble}");
return"事件:Fun_1";
///summary
///定義委托的事件
////summary
privatestringFun_2(intnInt,doubledDouble)
Console.WriteLine($"參數(shù)值:{nInt},{dDouble}");
return"事件:Fun_2";
///summary
///窗體構(gòu)造函數(shù)
////summary
publicForm1()
InitializeComponent();
InitAction();
//向委托添加事件
privatevoidInitAction()
TestFunc+=Fun_1;
TestFunc+=Fun_2;
//執(zhí)行委托
privatevoidbutton1_Click(objectsender,EventArgse)
varresult=TestFunc.Invoke(888,10);
Console.WriteLine($"返回結(jié)果:{result}");
輸出結(jié)果:
從輸出結(jié)果不難看出向委托添加多個(gè)事件(委托的多播或組播),委托包含返回值時(shí),僅得到最后向委托添加的事件(方法)的返回值,所以在使用有返回值時(shí)必須注意這一點(diǎn)。
以下為先添加Fu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 22087:2025 EN Intelligent transport systems - Collection of agent behaviour information and sharing between ITS stations
- 2025復(fù)合材料制品采購(gòu)合同
- 農(nóng)村畜牧技術(shù)推廣服務(wù)協(xié)議
- 設(shè)計(jì)與用戶體驗(yàn)的關(guān)聯(lián)性試題及答案
- 2025浙江衢州工業(yè)控股集團(tuán)有限公司招聘3人筆試參考題庫(kù)附帶答案詳解
- 幼兒園年度年檢工作自查報(bào)告
- 英2022版新課標(biāo)試題及答案
- 框架合同協(xié)議書
- 校車司機(jī)合同協(xié)議書
- 稻谷購(gòu)銷合同協(xié)議書
- 居民企業(yè)資產(chǎn)股權(quán)劃轉(zhuǎn)特殊性稅務(wù)處理申報(bào)表
- 高層建筑無地下室傾覆及滑移計(jì)算
- 全國(guó)普通高等學(xué)校本??飘厴I(yè)生就業(yè)協(xié)議書(填寫模板)
- 有機(jī)無機(jī)復(fù)混肥生產(chǎn)職位操作規(guī)程
- ERP生產(chǎn)管理系統(tǒng)用戶手冊(cè)(共51頁)
- 封條模板(A3紙)
- 無機(jī)化學(xué) 第18章 氫和稀有氣體
- 湖南省農(nóng)村土地承包經(jīng)營(yíng)權(quán)確權(quán)登記技術(shù)方案
- 供水公司組織機(jī)構(gòu)配置
- JJG 852-2019中子周圍劑量當(dāng)量(率)儀 檢定規(guī)程(高清版)
- 財(cái)務(wù)會(huì)計(jì)與財(cái)務(wù)管理基礎(chǔ)知識(shí)考試分析
評(píng)論
0/150
提交評(píng)論