国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

VB.net是怎樣做到的(4、5)

VB.net是怎樣做到的(4、5)

更新時間:2022-05-01 文章作者:未知 信息來源:網絡 閱讀次數:

VB.net是怎樣做到的(三)——Handles和WithEvents

VB除了可以用C#那樣的方法來處理事件響應以外,還有從VB5繼承下來的獨特的事件處理方式——WithEvents。

我喜歡稱這種事件處理方式為靜態的事件處理,書寫響應事件的方法時就已經決定該方法響應的是哪一個事件,而C#則是在代碼中綁定事件的。比如下面這個最簡單的例子:

Public Class HandlerClass
Public WithEvents MyObj As EventClass


Private Sub MyObj_MyEvent(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyObj.MyEvent
MsgBox("hello")
End Sub

Public Sub New()
MyObj = New EventClass
End Sub
End Class

代碼中用到的EventClass是這樣的:

Public Class EventClass
Public Event MyEvent As EventHandler

Protected Overridable Sub OnMyEvent(ByVal e As EventArgs)
RaiseEvent MyEvent(Me, e)
End Sub

Public Sub Test()
OnMyEvent(New EventArgs)
End Sub
End Class

我們來復習一下,這段代碼隱式地給EventClass編寫了兩個方法——Add_MyEvent(EventHandler)和Remove_MyEvent(EventHandler),實際上任何使用事件的上下文都是通過調用這兩個方法來綁定事件和解除綁定的。C#還允許你書寫自己的事件綁定/解除綁定的代碼。

那么WithEvents是怎么工作的呢?VB.net的編譯器在編譯時自動將

Public WithEvents MyObj As EventClass

翻譯成下面這個過程:

Private _MyObj As EventClass

Public Property MyObj() As EventClass
Get
Return _MyObj
End Get
Set(ByVal Value As EventClass)

If Not (Me._MyObj Is Nothing) Then
RemoveHandler _MyObj.MyEvent, New EventHandler(AddressOf MyObj_MyEvent)
End If

Me._MyObj = Value

If Me._MyObj Is Nothing Then Exit Property

AddHandler _MyObj.MyEvent, New EventHandler(AddressOf MyObj_MyEvent)

End Set
End Property

由此可見,當對WithEvents變量賦值的時候,會自動觸發這個屬性以綁定事件。我們所用的大部分事件響應都是1對1的,即一個過程響應一個事件,所以這種WithEvents靜態方法是非常有用的,它可以顯著增強代碼可讀性,同時也讓VB.net中的事件處理非常方便,不像C#那樣離開了窗體設計器就必須手工綁定事件。

不過在分析這段IL的時候,我也發現了VB.net在翻譯時小小的問題,就是ldarg.0出現得過多,這是頻繁使用Me或this的表現,所以我們在編碼過程中一定要注意,除了使用到Me/this本身引用以外,使用它的成員時不要帶上Me/this,比如Me.MyInt = 1就改成MyInt = 1,這樣的小習慣會為你帶來很大的性能收益。


VB.net是怎樣做到的(四)——類型轉換


今天在www.aspx.cn看到了一篇帖子,看到wyhw大俠真的希望dotnet blog成為.NET的精品技術Blog。所以我也不能偷懶了,趕快學習,并且多發技術帖子。
回到正題來,我今天在Visual Basic社區上看到在Visual Basic 2005中將加入一個新的運算符——TryCast,相當于C#的as運算符。我一直希望VB有這樣一個運算符,既然今天看到了,就順便研究一下VB和C#的類型轉換。先說VB,類型轉換運算符主要有CType和DirectCast。他們的用法幾乎一樣。我詳細比較了一下這兩個運算符,得出以下結論:

1、在轉換成引用類型時,兩者沒有什么區別,都是直接調用castclass指令,除非重載了類型轉換運算符(當然VB.NET還不行,但我沒有VB 2005,所以沒法試驗)。

2、轉換成值類型時,CType會調用VB指定的類型轉換函數(如果有的話),比如將String轉換為Int32時,就會自動調用VisualBasic.CompilerServices.IntegerType.FromString,而將Object轉換為Int32則會調用FromObject。其他數值類型轉換為Int32時,CType也會調用類型本身的轉換方法實施轉換。DirectCast運算符則很簡單,直接將對象拆箱成所需類型。

所以在用于值類型時,CType沒有DirectCast快速但可以支持更多的轉換。在C#中,類型轉換則為(type)運算符和as運算符。(type)運算符的工作方式與VB的DirectCast很相似,也是直接拆箱或castclass的,但是如果遇到支持的類型轉換(如long到int),(type)運算符也會調用相應的轉換方法,但不支持從String到int的轉換。C#另一個運算符as則更加智能,它只要判斷對象的運行實例能否轉成目標類型,然后就可以省略castclass指令,直接按已知類型進行操作,而且編譯器還可以自動對as進行優化,比如節省一個對象引用等。所以在將Object轉換成所需的類型時,as是最佳選擇。

由于as有很多優點,Visual Basic 2005將這一特性吸收了過來,用TryCast運算符就可以獲得和as一樣的效果,而且語法與DirectCast或CType一樣。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        亚洲综合偷拍欧美一区色| 久久99久久久欧美国产| 久久综合视频网| 亚洲综合偷拍欧美一区色| 欧美电影免费观看完整版| 中文字幕中文在线不卡住| 欧美日韩高清在线| 国产精品久久99| 777久久久精品| 日韩精品一区二区三区视频在线观看| 欧美色爱综合网| 成人精品视频.| 99精品热视频| 国产日韩欧美亚洲| 日韩av一区二区三区| 99精品视频一区| 日本道色综合久久| 欧美电影免费观看高清完整版在 | 久久久久久黄色| 日韩精品91亚洲二区在线观看 | 日本伦理一区二区| 99久久精品免费看国产| 亚洲美女视频在线| 国产高清成人在线| 欧美大度的电影原声| ...xxx性欧美| 国产最新精品精品你懂的| 欧美激情一区二区| 国产福利一区二区| 一区二区三区鲁丝不卡| 欧美一区二区三区爱爱| 国产成人小视频| 日韩一区精品字幕| 日韩毛片精品高清免费| 日韩三级免费观看| 在线一区二区观看| 国产成人精品一区二| 亚洲激情六月丁香| 欧美国产日韩在线观看| 欧美一区二区三区免费观看视频| 国产乱码字幕精品高清av| 亚洲成人av中文| 国产精品毛片久久久久久| 日韩欧美一级在线播放| 91精品福利视频| 91小视频免费观看| 岛国一区二区在线观看| 精品亚洲成a人| 天天操天天综合网| 亚洲最大成人网4388xx| 国产精品理伦片| 国产欧美日韩卡一| 久久久久久免费| 久久久综合精品| 26uuu国产日韩综合| 欧美一区二区播放| 欧美精品亚洲二区| 欧美日韩极品在线观看一区| 一本一道久久a久久精品| 韩国欧美国产一区| 狠狠久久亚洲欧美| 国产精品一区二区果冻传媒| 另类人妖一区二区av| 蜜臀久久99精品久久久久宅男| 亚洲成av人片在www色猫咪| 亚洲精品国产高清久久伦理二区| 中文乱码免费一区二区| 欧美国产成人精品| 亚洲女人小视频在线观看| 亚洲伦理在线精品| 亚洲www啪成人一区二区麻豆| 夜夜嗨av一区二区三区| 五月天久久比比资源色| 日本在线不卡视频| 麻豆久久久久久久| 国产精品77777竹菊影视小说| 成人小视频免费观看| 91视频com| 欧美男生操女生| 日韩精品专区在线影院观看| 欧美成人a∨高清免费观看| 久久精品一区二区三区av| 国产精品系列在线| 午夜欧美视频在线观看| 久久国产三级精品| 成人免费视频免费观看| 欧美日韩一区视频| 久久久美女艺术照精彩视频福利播放| 久久久91精品国产一区二区三区| 日本一区二区久久| 洋洋av久久久久久久一区| 日本不卡视频一二三区| 高清beeg欧美| 欧美日韩久久久一区| 国产日韩欧美激情| 婷婷综合五月天| 成人免费的视频| 欧美精品vⅰdeose4hd| 精品久久久久久久久久久院品网 | 麻豆久久久久久久| 成人av电影免费在线播放| 欧美偷拍一区二区| 国产午夜精品一区二区三区嫩草| 亚洲欧美日韩国产综合| 麻豆freexxxx性91精品| 91亚洲精品久久久蜜桃| 精品国产99国产精品| 一区二区三区四区在线播放| 麻豆高清免费国产一区| 日本道在线观看一区二区| 久久精品亚洲乱码伦伦中文| 一区二区在线观看视频| 国产成人午夜电影网| 欧美久久一区二区| 亚洲精品国产无天堂网2021| 国产成人免费在线视频| 91精品黄色片免费大全| 亚洲黄色免费网站| 北岛玲一区二区三区四区| 久久久午夜电影| 久久精品国产99国产精品| 欧美日韩精品三区| 一片黄亚洲嫩模| 91在线视频18| 中文字幕国产一区二区| 国产乱码精品1区2区3区| 欧美精品三级在线观看| 亚洲午夜成aⅴ人片| 91视频免费播放| 亚洲人成网站在线| 色综合久久中文综合久久牛| 国产精品你懂的在线欣赏| 国产九九视频一区二区三区| 欧美一区二区观看视频| 日本不卡免费在线视频| 91精品国产综合久久久久久漫画| 亚洲国产中文字幕| 欧美人与禽zozo性伦| 日韩不卡手机在线v区| 欧美另类videos死尸| 日韩一区精品视频| 精品乱码亚洲一区二区不卡| 日本vs亚洲vs韩国一区三区| 欧美一级一级性生活免费录像| 日韩在线一区二区| 欧美va亚洲va在线观看蝴蝶网| 免费av网站大全久久| 欧美成人一区二区三区在线观看| 青娱乐精品视频| 26uuu久久综合| 91在线国产福利| 午夜视频在线观看一区二区| 欧美剧情电影在线观看完整版免费励志电影| 亚洲成人av一区二区三区| 欧美一区二区三区影视| 国产精品一区免费在线观看| 国产精品美女久久久久久久久| 色综合色综合色综合色综合色综合| 一区二区三区在线播| 日韩视频一区在线观看| 国产精品一区二区在线观看不卡 | 欧美一区二区高清| 精品一区二区三区av| 亚洲国产精品成人综合| 91女人视频在线观看| 亚洲国产欧美在线| 久久久www成人免费毛片麻豆 | 欧美韩国日本不卡| 色婷婷av一区二区三区之一色屋| 亚洲va国产va欧美va观看| 精品国产免费人成在线观看| 成人伦理片在线| 偷拍一区二区三区| 中文字幕av一区 二区| 欧美日韩成人综合在线一区二区| 精品一区二区三区视频| 国产精品美女久久久久aⅴ国产馆| 欧美性猛交xxxxxx富婆| 国产一区二区三区电影在线观看 | 欧美综合一区二区| 久久不见久久见免费视频1| 中文在线一区二区| 91精品欧美久久久久久动漫| 成年人网站91| 麻豆精品一区二区综合av| 亚洲激情在线播放| 国产欧美一区二区三区鸳鸯浴| 欧美色爱综合网| 成人午夜短视频| 精品午夜一区二区三区在线观看| 一级精品视频在线观看宜春院| 欧美精品一区二区三区一线天视频| 色久综合一二码| av影院午夜一区| 国产福利一区二区| 国产一区二区三区四区在线观看 | 亚洲一区二三区| 国产精品久久毛片| 亚洲国产高清不卡| 久久久另类综合|