第6章--索引器、委托和事件_第1頁
第6章--索引器、委托和事件_第2頁
第6章--索引器、委托和事件_第3頁
第6章--索引器、委托和事件_第4頁
第6章--索引器、委托和事件_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第6章 索引器、委托和事件我們知道數(shù)組中的元素可以通過索引進(jìn)行檢索,如果一個類中有很多對象,怎樣簡單快速地查找到需要的對象以及對象的特性呢?索引器就是為了實(shí)現(xiàn)這樣的功能而設(shè)計的。索引器允許類或者結(jié)構(gòu)的實(shí)例可以按照數(shù)組那樣進(jìn)行索引??梢院唵蔚匕阉饕骼斫鉃槌R姷臅械哪夸?,字典中提供檢索的索引。委托和事件是C#中兩個比較復(fù)雜的概念,事件在Windows編程中比較常見,但這些事件的產(chǎn)生基本上都由VS2008封裝好,可以自動完成,通常不需要深入了解,本章將簡單地介紹這兩個概念和基本用法,使讀者能夠更深入理解C#中的事件處理機(jī)制。本章的主要內(nèi)容有:定義和使用索引器如何理解委托和事件6.1 索引器的使用

2、 您查過字典嗎?這個問題太幼稚了,相信大家都查過字典,無論新華字典還是成語詞典都提供了檢索方法,可以根據(jù)拼音檢索,也可根據(jù)漢字部首檢索,當(dāng)然還有其他檢索方式,幫助我們快速查找需要的信息。這節(jié)學(xué)習(xí)的索引器類似于字典中的檢索,可以根據(jù)需要設(shè)定不同的檢索方式,以快速查找類或結(jié)構(gòu)的實(shí)例。6.1.1 索引器的定義索引器的定義類似于屬性,但其功能與屬性并不相同。索引器提供一種特殊的方法編寫get和set訪問器。屬性可以使用戶像訪問字段一樣訪問對象的數(shù)據(jù),索引器可以使用戶像訪問數(shù)組一樣訪問類成員。定義索引器的語法如下: 返回類型 this數(shù)據(jù)類型 標(biāo)識 get語句集合 set語句集合示例代碼如下:publi

3、c string thisint i getreturn namei; setnamei=value;6.1.2 索引器的使用【本節(jié)示例參考:源代碼C6Example_IndexTest】 定義索引器的目的在于為類提供與數(shù)組相似的方法進(jìn)行索引,就像字典中提供的部首檢字法和拼音檢字法,方便檢索數(shù)據(jù)信息。下面通過一個簡單的例子來學(xué)習(xí)索引器的使用。【問題:一個班內(nèi)有50名學(xué)生,每一個學(xué)生具有學(xué)號、姓名、性別的屬性,希望通過學(xué)生姓名或者學(xué)號查詢該學(xué)生的其他信息,如何實(shí)現(xiàn)呢?】分析:(1)首先定義一個學(xué)生類,具有學(xué)號、姓名、性別的屬性。(2)建立一個班級類,在班級中存儲學(xué)生信息。(3)使用索引,分別通過

4、姓名和學(xué)號來獲得學(xué)生信息。示例代碼如代碼6-1所示。6.2 委托 委托這個詞在生活中經(jīng)常遇到,委托律師打官司,委托房地產(chǎn)公司購買房子,委托保險代理人辦理保險等。委托的意思就是把事情交付給別人去辦。C#中的委托和生活中的很相似,如果將一個方法委托給一個對象,那么這個對象就可以全權(quán)代理這個方法的執(zhí)行。委托在C#中是一個比較復(fù)雜的概念,下面我們將由淺入深學(xué)習(xí)詳細(xì)內(nèi)容。6.2.1 定義委托如果你需要委托律師打官司,首先必須有律師,這類律師可以接受哪一類型的案件,這是委托律師時要考慮的。C#中方法的形式很多,委托能夠代表什么類型的方法和委托類型的定義有關(guān)。定義委托的語法如下: delegate 返回類型

5、 委托名();從上面可以看出定義委托和定義方法很相似,委托沒有具體的實(shí)現(xiàn)體,由關(guān)鍵字delegate聲明,直接以分號結(jié)束。委托能夠代表什么樣的方法由它的返回值類型和參數(shù)列表決定。如果定義如下委托:public delegate void MyDelegate(string name);那么使用MyDelegate委托代表的只可以是沒有返回值,參數(shù)為一個字符串的方法。6.2.2 調(diào)用委托 【本節(jié)示例參考:源代碼C6Example_DelegateTest】 定義了委托之后,如何使用委托代表方法執(zhí)行呢?首先要實(shí)例化委托。實(shí)例化委托就是將其指向某個方法,即調(diào)用委托的構(gòu)造函數(shù),并將相關(guān)聯(lián)的方法作為參數(shù)

6、傳遞。然后通過調(diào)用委托,執(zhí)行相關(guān)方法。下面代碼6-2演示委托的使用。6.3 事件事件是C#中另一個高級概念,使用方法和委托密切相關(guān)。奧運(yùn)會參加百米跑的田徑運(yùn)動員聽到槍聲,比賽立即開始,其中槍聲就是事件,而運(yùn)動員開始比賽就是這個事件發(fā)生后引發(fā)的動作。不參加該項(xiàng)比賽的運(yùn)動員或者其他人對槍聲事件沒有反應(yīng)。在課堂上老師說開始考試,學(xué)生即開始答卷,其中老師說開始考試是事件,學(xué)生開始答卷是這個事件引發(fā)的動作。老師是事件的發(fā)布者,學(xué)生是事件的訂閱者。C#中事件的處理和我們通常見到的事件具有相同的處理方式。從程序員的角度分析上面的例子,當(dāng)裁判員槍聲響起時,發(fā)生了一個事件,裁判員通知該事件的發(fā)生,參加比賽的運(yùn)動員則仔細(xì)聽槍聲是否發(fā)生,運(yùn)動員是該事件的訂閱者,沒有參加比賽的運(yùn)動員則不會注意,即沒有訂閱該事件。C#中事件處理步驟如下:(1)定義事件。(2)訂閱該事件。(3)事件發(fā)生時通知訂閱者發(fā)生的事件。6.4 小結(jié)本章學(xué)習(xí)了C#中的一些高級概念,索引器、委托和事件,主要內(nèi)容如下:使用索引器可以使我們像訪問數(shù)組一樣訪問類成員。索引器可以使用索引訪問,也可以自定義方式訪問。委托類似于函數(shù)指針,但函數(shù)指針只能用于靜態(tài)方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論