溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VB.NET事件訪問器的特性是什么呢

發(fā)布時間:2021-10-27 18:10:56 來源:億速云 閱讀:165 作者:柒染 欄目:編程語言

VB.NET事件訪問器的特性是什么呢,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

 VB.NET編程語言中有兩種比較重要的訪問器,一種是屬性訪問器,另一種則是VB.NET事件訪問器。在這里我們會針對這兩種訪問器做一個詳細(xì)的介紹,尤其是VB.NET事件訪問器的相關(guān)應(yīng)用方式。

VB.NET屬性訪問器的可訪問性

以前,一個一直困擾我的問題就是VB.NET中Get和Set訪問器必須具有相同的可訪問性(Public、Friend、或Private)。如果你想創(chuàng)建一個只讀的Public屬性(只有Get被公開),那么在你的組件中并沒有Set訪問器來強(qiáng)制確認(rèn)或者自定義屬性的處理。

現(xiàn)在,VisualBasic2005中的Get和Set訪問器可以設(shè)置不同的可訪問性了,只是Set在訪問上必須比Get更受限制:

Private_myPropAsString   PublicPropertyMyProp()AsString   Get  Return_myProp  EndGet   FriendSet(ByValvalueAsString)  Ifvalue.Trim.Length>0Then  _myProp=value.Trim  Else  value="<novalue>" EndIf  EndSet   EndProperty

無論是對于團(tuán)隊(duì)開發(fā)環(huán)境還是對于為了努力追求代碼***重用率的個人開發(fā)者,這個特性都相當(dāng)有用。

自定義VB.NET事件訪問器

VB.NET事件訪問器允許你定義一個自定義事件,并且,你可以控制在當(dāng)客戶端添加或刪除了事件處理器并引發(fā)你的事件后所發(fā)生的情況。假設(shè)你有一個自定義的類,在該類中你引發(fā)了一個RateChanged事件。你可以按照下面兩種方式其中一種來聲明普通的事件:

PublicEventRateChanged()  ''或者  PublicEventHoursChangedAsEventHandler

用這種方式聲明事件會產(chǎn)生一個自動托管的后備存儲。換言之,系統(tǒng)將處理事件托管和分派的方式。通常情況下這就很好了,但是有時候,你需要對如何通知事件監(jiān)聽器的方式擁有更多的控制。

你可以利用這個新的Custom關(guān)鍵字來定義一個自定義事件以及它的訪問修飾符。當(dāng)你在事件聲明上敲下回車鍵后,VisualBasic2005將為你自動生成代碼原形,其生成方式就像Property訪問器那樣:

PublicCustomEventNameChangedAsEventHandler  AddHandler(ByValvalueAsEventHandler)  ''把處理器與后備存儲掛鉤  EndAddHandler 軟件開發(fā)網(wǎng)   RemoveHandler(ByValvalueAsEventHandler)  ''從后備存儲中刪除處理器  EndRemoveHandler   RaiseEvent(ByValsenderAsObject,ByValeAsEventArgs)  ''激發(fā)監(jiān)聽器  EndRaiseEvent   EndEvent

當(dāng)客戶端為你的事件添加或刪除了一個處理器后,AddHandler或RemoveHandler歷程開始運(yùn)作。而當(dāng)事件被引發(fā)后,RaiseEvent歷程開始執(zhí)行。通過這種方式,你可以按照你想要為事件托管后備存儲的方式來采取特別的操作。當(dāng)你用這種方式創(chuàng)建了這些自定義事件,你就可以把該事件當(dāng)作屬性來看待。

一個展示了自定義VB.NET事件訪問器有用一面的例子,就是當(dāng)你的對象是可序列化的、并且你有一個可以被一個不可序列化的委托對象處理的事件的時候。如果你試圖通過一個普通事件來序列化你的對象,序列化就會失敗,這是因?yàn)楹髠湓撌录拇鎯κ遣豢尚蛄谢摹?/p>

看完上述內(nèi)容,你們掌握VB.NET事件訪問器的特性是什么呢的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI