講述C#與VB.NET間移植的技巧
在向大家詳細(xì)介紹C#與VB.NET間移植的技巧之前,首先讓大家了解下C#與VB.NET兩者的區(qū)別,然后全面介紹C#與VB.NET間移植的技巧。
一、C#——像VB一樣簡單,像C++一樣強(qiáng)大的新語
C#是***流的面向組件的語言由 Turbo Pascal, Delphi, and Visual J++的***設(shè)計師Anders Hejlsberg 傾心3年設(shè)計所有的語言元素都是真正的對象開發(fā)強(qiáng)壯和可重用的軟件所有的.NET Framework中的基類庫(Base Class Library)都由C# 編寫
二、VB.NET——完全面向?qū)ο蟮腂ASIC語言
1.新語言特性
完全面向?qū)ο蟥C繼承(Inheritance), 重載(overloading), 共享的成員, 結(jié)構(gòu)化異常處理強(qiáng)壯的語言 –嚴(yán)格的類型檢查, 變量聲明時初始化,支持垃圾收集(Garbage collection)強(qiáng)大 –支持委托(Delegates), free threading,Variant 數(shù)據(jù)類型被 Object 代替
2.與VB6一致的語法
三、C#與VB.NET兩者的區(qū)別?
1.語法上的差異,例如循環(huán)的寫法
VB.NET
- For I = 1 To 10
- ‘ for loop
- Next I
C#
- For (i=1;i<11;i++) {
- // for loop
- }
另外Visual Basic 對大小寫不敏感,而C#是大小寫敏感的。
2.C# 具有但 Visual Basic 不具有的特性指針, 移位操作符, 內(nèi)嵌的文檔(XML)重載操作符
3.Visual Basic具有但 C# 不具有的特性
更豐富的語法: Events, Try…Catch, Select…Case, 實現(xiàn) Interface后期綁定(Late binding), 動態(tài)數(shù)組, 模塊(modules), 可選參數(shù), 參數(shù)屬性(parameterized properties)后臺編譯
四、C#與VB.NET間移植的技巧
按理說,這兩種語言沒有什么移植的必要,因為他們生成的代碼可以完全通用。但是如果一個工程基本上是VB寫成的,卻需要少許已經(jīng)存在的C#過程,用組件并不是一種效率很高的辦法。就算是學(xué)習(xí)C#或VB,學(xué)會他們之間的移植可以雙倍的利用已經(jīng)存在的代碼(如好玩的Donkey.net就只有VB版)。
有人比較過這兩種語言,得出的結(jié)論是他們很相似。但即便是這樣,VB初學(xué)者看到諸如((Button)sender).Text = “啟動”;之類的語法不知道如何移植到VB,而C#初學(xué)者看到Handles Button1.Click等語法也會為移植而感到頭痛。下面就看看他們最難移植的部分:
1、Option語句。VB的Option語句可以打開或關(guān)閉變量聲明檢查和類型轉(zhuǎn)換檢查。尤其是Option Strict被關(guān)閉后,VB變成弱類型語言,很多類型轉(zhuǎn)換都是自動的,移植到C#中會產(chǎn)生無數(shù)錯誤。因此,如果要將帶有Option Strict Off語句的VB程序移植到C#,***先在VB中將Option Strict打開,然后把所有類型轉(zhuǎn)換出錯的地方變成強(qiáng)類型轉(zhuǎn)換,然后再進(jìn)行移植。
2、類型轉(zhuǎn)換。VB提供了很多類型轉(zhuǎn)換函數(shù)型運(yùn)算符,如CInt(), CSng(), CStr()等,在C#中只要用(int) , (float), (String)即可。然而如果不是標(biāo)準(zhǔn)類型,如下面的C#語句: ((System.Button)sender).Text = “啟動”; 就要使用VB的函數(shù)型運(yùn)算符CType來實現(xiàn)。上面的代碼正確的移植方法是:CType(sender, System.Button).Text = “啟動” 千萬不要使用某些人推薦的,將Option Strict關(guān)閉,然后用后期綁定調(diào)用sender對象的方法,這根本不符合程序移植不能改變本質(zhì)的要求。
3、修飾符和屬性標(biāo)簽。VB和C#的修飾符是完全對等存在的,但是拼寫往往不同,給移植帶來了很多麻煩,尤其是表示相同意思的關(guān)鍵字從字面理解完全不同的時候。下面就給出了VB和C#對應(yīng)的關(guān)鍵字:
【編輯推薦】