講述C#與VB.NET間移植的技巧
在向大家詳細介紹C#與VB.NET間移植的技巧之前,首先讓大家了解下C#與VB.NET兩者的區(qū)別,然后全面介紹C#與VB.NET間移植的技巧。
一、C#——像VB一樣簡單,像C++一樣強大的新語
C#是***流的面向組件的語言由 Turbo Pascal, Delphi, and Visual J++的***設計師Anders Hejlsberg 傾心3年設計所有的語言元素都是真正的對象開發(fā)強壯和可重用的軟件所有的.NET Framework中的基類庫(Base Class Library)都由C# 編寫
二、VB.NET——完全面向?qū)ο蟮腂ASIC語言
1.新語言特性
完全面向?qū)ο蟥C繼承(Inheritance), 重載(overloading), 共享的成員, 結(jié)構化異常處理強壯的語言 –嚴格的類型檢查, 變量聲明時初始化,支持垃圾收集(Garbage collection)強大 –支持委托(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#過程,用組件并不是一種效率很高的辦法。就算是學習C#或VB,學會他們之間的移植可以雙倍的利用已經(jīng)存在的代碼(如好玩的Donkey.net就只有VB版)。
有人比較過這兩種語言,得出的結(jié)論是他們很相似。但即便是這樣,VB初學者看到諸如((Button)sender).Text = “啟動”;之類的語法不知道如何移植到VB,而C#初學者看到Handles Button1.Click等語法也會為移植而感到頭痛。下面就看看他們最難移植的部分:
1、Option語句。VB的Option語句可以打開或關閉變量聲明檢查和類型轉(zhuǎn)換檢查。尤其是Option Strict被關閉后,VB變成弱類型語言,很多類型轉(zhuǎn)換都是自動的,移植到C#中會產(chǎn)生無數(shù)錯誤。因此,如果要將帶有Option Strict Off語句的VB程序移植到C#,***先在VB中將Option Strict打開,然后把所有類型轉(zhuǎn)換出錯的地方變成強類型轉(zhuǎn)換,然后再進行移植。
2、類型轉(zhuǎn)換。VB提供了很多類型轉(zhuǎn)換函數(shù)型運算符,如CInt(), CSng(), CStr()等,在C#中只要用(int) , (float), (String)即可。然而如果不是標準類型,如下面的C#語句: ((System.Button)sender).Text = “啟動”; 就要使用VB的函數(shù)型運算符CType來實現(xiàn)。上面的代碼正確的移植方法是:CType(sender, System.Button).Text = “啟動” 千萬不要使用某些人推薦的,將Option Strict關閉,然后用后期綁定調(diào)用sender對象的方法,這根本不符合程序移植不能改變本質(zhì)的要求。
3、修飾符和屬性標簽。VB和C#的修飾符是完全對等存在的,但是拼寫往往不同,給移植帶來了很多麻煩,尤其是表示相同意思的關鍵字從字面理解完全不同的時候。下面就給出了VB和C#對應的關鍵字:
【編輯推薦】