淺談VB.NET語言與.NET開發(fā)語言關系
VB.NET還是比較常用的,于是我研究了一下VB.NET語言與.NET開發(fā)語言關系,在這里拿出來和大家分享一下,希望對大家有用。
VB.NET語言與.NET開發(fā)語言關系
我工作過的許多公司在選擇VB.NET作為他們的核心開發(fā)工具時都經歷了一個長時間的抉擇,他們所關心的最主要的問題之一是如果他們不使用C#語言就不能開發(fā)出純.NET框架代碼。主要有兩個原因使他們得出這樣的結論:首先,由于VB(6.0或早期版本)運行時的限制,VB在開發(fā)COM構件的能力方面不如C語言功能強大,他們關心這些限制是否在.NET中依舊存在;再者,由于微軟提倡將C#作為在.NET平臺上的主要開發(fā)工具,很多VB開發(fā)者懷疑微軟是否已經在VB.NET改進了VB先前版本的功能。
有個客戶曾經跟我提起過這個問題,還特意請求我?guī)椭墓驹诓灰蕾嘨B6中的任何功能時如何使用VB.NET語言作為純.NET開發(fā)語言。當我問他為什么他認為VB.NET語言不是純.NET開發(fā)語言時,他告訴我他最近將一個項目從VB6升級到VB.NET時,他在VB.NET中看到有很多象Imports Microsoft.VisualBasic和Imports Microsoft.VisualBasic.Compatibilit的輸入語句,這些語句表明了VB.NET依舊在使用早期VB版本的一些功能;他說 “如果VB.NET是.NET環(huán)境中一流的開發(fā)語言,為什幺還要用到早先VB版本中的功能呢?”。為了回答他的這個問題,并且給VB.NET的開發(fā)者提供一個如何使用這些包的建議,我將在此文章中解釋為什么微軟還在.NET平臺中實現(xiàn)VB早期版本的中的一些功能的原因。
VB中的核心動態(tài)鏈接庫(DLL)
將核心VB語言建造到.NET框架的方式同C#一樣,主要的區(qū)別是微軟為VB的開發(fā)者將兩個附加的庫增加到.NET中。首先,Microsoft.VisualBasic是.NET中可重新分發(fā)包的一個重要組成部分,它是VB早期版本的功能在.NET中的一個實現(xiàn),同時兩者也有一些細微的差別。實際上,有些VB函數(shù)(尤其是類型轉換部分的函數(shù))比.NET的通用語言運行時(CLR)所提供的對象有著更好的性能。例如,使用 CInt()就比使用Convert對象要好;另外,有些VB函數(shù)替你做了一些額外的工作,例如,函數(shù)CStr()在轉換字符串時也自動進行了區(qū)域性方面的處理,如果你用Convert對象就必須自己做這些額外的工作。
同時.NET中的庫也提供了VB開發(fā)者原來經常使用的一些通用環(huán)境常量,例如,vbCrLf回車換行符。其實如果你不想使用原來的老式常量,你能使用System.Environment.Newline方法或 System.Convert.ToChar(13)&System.Convert.ToChar(10)來得到同樣的常量。象vbCrLf這樣的常量引用在.NET中直接被映像到框架底層的調用,所以在性能方面應該沒有什么影響。像上面這種情況,編譯器將它優(yōu)化成單個字符串,如果它是一個變量,它就直接被映像到rn,將它翻譯成一個回車換行符。VB早期版本的函數(shù)也直接被映像到.NET框架底層的調用,象msgbox語句直接映像成.NET 框架中的MessageBox,這種情況由于兩者編譯完了以后生成的中間語言(IL)基本上是相
【編輯推薦】