自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

描述VB.NET DirectCast運(yùn)算符

開發(fā) 后端
這里介紹VB.NET DirectCast運(yùn)算符,在Visual Basic 2005中將加入一個(gè)新的運(yùn)算符——TryCast,相當(dāng)于C#的as運(yùn)算符。我一直希望VB有這樣一個(gè)運(yùn)算符。VB目前的類型轉(zhuǎn)換運(yùn)算符主要有 CType和DirectCast。

本人很喜歡VB.NET DirectCast運(yùn)算符,在工作中也很喜歡總結(jié)關(guān)于VB.NET DirectCast運(yùn)算符的經(jīng)驗(yàn)教訓(xùn),下面就這個(gè)問題來詳細(xì)說說吧。VB.NET 能夠?qū)崿F(xiàn)很多C#不能做到的功能,如When語(yǔ)句、Optional參數(shù)、局部Static變量、對(duì)象實(shí)例訪問靜態(tài)方法、Handles綁定事件、On Error處理異常、Object直接后期綁定等等。VB和C#同屬.NET的語(yǔ)言,編譯出來的是同樣的CIL,但為什么VB支持很多有趣的特性呢。我們一起來探究一下VB.NET DirectCast運(yùn)算符。

在Visual Basic 2005中將加入一個(gè)新的運(yùn)算符——TryCast,相當(dāng)于C#的as運(yùn)算符。我一直希望VB有這樣一個(gè)運(yùn)算符。VB目前的類型轉(zhuǎn)換運(yùn)算符主要有 CType和DirectCast。他們的用法幾乎一樣。我詳細(xì)比較了一下這兩個(gè)運(yùn)算符,得出以下結(jié)論:

1、在轉(zhuǎn)換成引用類型時(shí),兩者沒有什么區(qū)別,都是直接調(diào)用castclass指令,除非重載了類型轉(zhuǎn)換運(yùn)算符CType。VB.NET DirectCast運(yùn)算符是不能重載的。

2、轉(zhuǎn)換成值類型時(shí),CType會(huì)調(diào)用VB指定的類型轉(zhuǎn)換函數(shù)(如果有的話),比如將String轉(zhuǎn)換為Int32時(shí),就會(huì)自動(dòng)調(diào)用 VisualBasic.CompilerServices.IntegerType.FromString,而將Object轉(zhuǎn)換為Int32則會(huì)調(diào)用 FromObject。其他數(shù)值類型轉(zhuǎn)換為Int32時(shí),CType也會(huì)調(diào)用類型本身的轉(zhuǎn)換方法實(shí)施轉(zhuǎn)換。VB.NET DirectCast運(yùn)算符則很簡(jiǎn)單,直接將對(duì)象拆箱成所需類型。

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

由于as有很多優(yōu)點(diǎn),Visual Basic 2005將這一特性吸收了過來,用TryCast運(yùn)算符就可以獲得和as一樣的效果,而且語(yǔ)法與VB.NET DirectCast運(yùn)算符或CType一樣。

【編輯推薦】

  1. 詳細(xì)分析VB.NET WithEvents
  2. 淺析VB.NET局部靜態(tài)變量
  3. 原理分析VB.NET開發(fā)控件
  4. 自己動(dòng)手用代碼實(shí)現(xiàn)VB.NET ListView加載數(shù)據(jù)
  5. 詳細(xì)介紹VB.NET MyClass
責(zé)任編輯:佚名 來源: 51cto.com
相關(guān)推薦

2010-01-14 13:08:37

VB.NET運(yùn)算符

2010-01-07 14:52:41

VB.NET運(yùn)算符

2010-01-19 15:30:44

VB.NET比較運(yùn)算符

2010-01-20 14:32:12

VB.NET轉(zhuǎn)換運(yùn)算符

2010-01-21 17:39:26

VB.NET運(yùn)算符過程

2010-01-22 17:48:46

VB.NET運(yùn)算符重載

2010-01-20 14:06:36

VB.NET運(yùn)算符組合

2009-10-20 14:21:55

VB.NET fnSi

2010-01-18 14:08:29

VB.NET類型轉(zhuǎn)換

2009-10-23 10:18:43

VB.NET運(yùn)算符

2009-10-19 14:22:13

VB.NET EIF體

2009-10-20 14:09:05

VB.NET反射功能

2009-10-27 12:06:01

VB.NET IDis

2009-10-15 09:02:19

VB.NET申明數(shù)組

2009-10-14 13:56:05

VB.NET數(shù)據(jù)窗體

2009-10-13 09:33:49

VB.NET Web

2009-10-30 11:20:54

VB.NET Proc

2009-10-12 12:54:58

VB.NET聲明API

2009-10-15 15:04:42

VB.NET PadL

2009-10-13 17:16:40

VB.NET Web服
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)