將VB.NET網站轉換成C#的全過程

來源:互聯網
上載者:User

標籤:

在學習URL重寫過程中碰到個是VB寫的源碼,看起來總是不爽的就GOOLE了下 感覺這個文章寫的不錯

原文地址 http://www.cnblogs.com/cngunner/archive/2006/01/16/318309.html

前兩天看到一個比較不錯的網站,可惜是用vb.net寫的,俺弄不大明白,於是心血來潮想把它全部轉換成C#代碼的。花了N長時間,問了幾多人,費了不少神,總算是能讓網站在C#下馬馬虎虎的跑了,不小心還喜歡蹦出個鮮紅奪目的錯誤資訊,真是讓人戰戰兢兢。

 總結的經驗教訓就是:沒事別再這麼幹了,有這些閑功夫不如把這兩種語言都弄懂,或者把網站重寫。大家看看我轉化的詳細過程,估計也會知難而退的。一、代碼轉化的幾種方式1、通過工具直接轉化第一款:VB.net to C# Converterhttp://www.vbconversions.com/index.html            VB.net to C# Converter是一款離線轉換軟體,安裝簡單,提供試用版,而且試用版永不到期,但是試用版只能翻譯不超過600行源碼的工程。VB.net to C# Converter將使用者的VB.net項目用C#語言重新編寫,同時變數名、注釋行都被保留下來。它具有完備的功能,提供專業的報告產生工具,而且能夠對轉換過程中的錯誤建置錯誤記錄,並且在此基礎上提供錯誤分析和提供修改建議。總之,它是一款充分為使用者考慮的,功能完備的轉換工具。它提供多種類型工程的轉換,包括Windows Forms 工程、Console 工程、Windows Control 庫、Web Control 庫、Web Services工程、Windows Service 工程。提供多種形式的轉換,包括單一工程、多個工程、互動式代碼轉換、命令列形式轉換。大多數的VB 函數都能轉換為相應的 C# 功能,而且註解等也能得到很好的轉換。可以使用嚮導,並提供線上協助。轉換準確率高達99%。但是,它不支援中文,中文註解會產生亂碼。完整版需要購買。(宋立桓老師)正式版本收費在100美元左右,好像只能對工程檔案進行轉換,我手頭的代碼沒有工程檔案,沒用這個軟體。第二款:Convert Assistanthttp://www.wimontheweb.com/ca_main.aspx這款口碑也不錯,看人家的介紹:Our assistant will help you to translate all your VB.NET projects to C#. She does this in a very textual way. Therefore, you don‘t need to have any references or additional components on your computer. As long as the syntax is correct, she‘ll be pleased to help you. Next thing you know, your source code has become sharp and crystal-clear!    好像也不提供免費,有錢的大淫,可以買來玩玩。第三款 TransKing for Visual Studio .NEThttp://www.e-iceblue.com/

 

Price:   EUR 133.40 / USD 149.00 
Shipment:   Full version in an e-mail attachment
Platform:   .NET VS.NET 2002 or VS.NET 2003
Version:   1.56

 

     自稱是市面上最好的VB & VB.net into C#工具,我反正是沒用過,149美元能買多少餡餅、火腿腸、即食麵啊,要是都換成白面饅頭,可有一大車呢。另外貼一款VB.NET to C# 的工具地址,這類解決方案較多,就不贅述了。http://csharpconverter.claritycon.com/Default.aspx2、線上 WebService調用http://www.kamalpatel.net/     微軟最有價值專家的解決方案,網上有多家 BLOG 介紹過,他的 C# to VB.NET 開發的相當成功,國內有款轉換軟體叫 “WebServiceDemo.exe” ,就是調用他的引用。後來推出的 VB.NET to C# 版本,名氣雖大,就是經常不能用。3、線上轉換服務將轉換邏輯封裝在伺服器上,你把代碼Ctrl+C上去,點“轉換”,人家就把轉換好的代碼給你顯示在頁面上。Developer fusionhttp://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx使用方便,而且免費。只是目前正在試用階段,轉換後程式錯誤較多,並且在轉換後的代碼裡不包含注釋,這是因為轉換後的代碼在返回之前,首先被翻譯為抽象樹,而目前的這種樹狀結構把注釋都忽略了。(宋立桓老師)另一款http://www.icsharpcode.net/,這個不怎麼樣。二、vb.net與c#的風格轉化1、大小寫怎麼說好呢,vb.net是對大小寫不敏感的,而C#恰恰相反,大多數轉換後的代碼還是小寫,所以工作量就來了,啥也不用說了,改吧。常用的:.Replace、SqlConnection、ConfigurationSettings.AppSettings、SqlDataAdapterDataTable、Selected、.SelectedItem、DataSet、DataColumn、DataSource、DataColumn()、.Tables、.Fill.DataBind()、.ColumnName、.DataType、.Add、.Rows、.Count、System.Type.GetType、.ToString()……….2、用法Vb.net很多地方的用法和C# 不同,沒辦法,還得手工改,比如:Mid-----------------------------------------à.Substring()Trim----------------------------------------à.Trim()Len------------------------------------------à.Length()page.ispostback()-------------------------àPage.IsPostBackSession("")---------------------------------àSession[""]dt.rows(i).item("abc")--------------------àdt.Rows[i]["abc"]ds.tables("abc")---------------------------àds.Tables["abc"].items(i). ----------------------------------à.Items[i]改的時候用DW整目錄一搜,出來8000多條記錄,都得手工逐條改,進度非常慢。後來請教了Ectotherm,改用正則匹配,速度快多了。不過複雜的語句還是要靠手工修改,正則很難構造,而且經常匹配出錯。EmEditor.exe對字元正則尋找替換支援的非常好,強烈推薦。(有點像中插廣告)回想起那段往事,真是沒事找事。3、函數在下VB.NET可以使用的許多函數和方法到了C#就不靈了,比如IsNumeric再比如isdbnull,都改成這份上了,總不能半途而廢吧,請教穀坤的結果就是自己寫一個 Isnumeric然後在頁面中調用。這點倒不用著急,已經有好事者幫咱們做好了。IsNumeric in C#, WHY NOT?http://dotnet.org.za/deonvs/archive/2004/07/06/2579.aspx具體方法是構建一個func.inc,然後在每個調用IsNumric方法的頁面添加<!-- #include file="../func.inc" -->,func.inc代碼如下:public static bool IsNumeric(object Expression){      bool isNum;      double retNum;      isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any,System.Globalization.NumberFormatInfo.InvariantInfo, out retNum );      return isNum;}三、與格式轉化相關的網站資料     1、VB.net與C#對照表,包括以下方面   http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html 
Program StructureComments Data Types ConstantsEnumerations Operators ChoicesLoops ArraysFunctions Strings Exception HandlingNamespaces Classes / Interfaces Constructors / Destructors Objects StructsProperties Delegates / Events Console I/OFile I/O
    2、From VB.NET to C# and Back Again      Darren Neimke和Scott Mitchell撰寫的,有關VB.net 和C#代碼互轉的專作。http://www.4guysfromrolla.com/webtech/012702-1.shtml    3、C# to VB.NET Translator,如何轉化C#為VB.NET指導類文章。    http://authors.aspalliance.com/aldotnet/examples/translate.aspx四、專家意見哈哈,搬出專家的意見更顯得有說服性,下面是我請教微軟MVP宋立桓老師後,他給出的指導性、建設性和前瞻性意見,軟體說明部分我作了直接引用:我只能提供方法和原則,首先你可以全面瞭解兩種語言的文法和構造的差別,並可以通過一門語言學習另外一門語言。其次,也可以使用些轉換軟體,不過,至今卻還沒有一種工具能夠實現100%的無差錯轉換。因為,大多數的轉換軟體都是基於字面和文法的轉換,而不是基於程式邏輯的轉換,所以程式轉換過程中就可能因為程式邏輯不被理解而發生錯誤。因此使用工具轉換後我們還是要進行測試和少量修改的,同時瞭解一定的C#和VB.net的文法和它們之間的差別對我們還是很有好處的。如果採用手工轉換,那麼C#和VB.net之間的文法對照表可能對你有用,可以參考以下網址:http://www.harding.edu/USER/fmccown/WWW/vbnet_csharp_comparison.html。一些注意點:(1) C#中引用比較和值的比較都使用“==” 關鍵字,而VB.net 使用“is”關鍵字做引用比較,(2) C#中字元串連符和加法運算子都使用“+”(3) VB.net是大小寫不敏感的,(4) 注釋有時不能載入到正確位置五、小結呵呵,是不是挺麻煩的,反正我是不願再參與類似的事情了。我剛開始學習.net技術,渴望有多多的高手帶我,也希望認識更多的喜歡.net的朋友。感謝宋老師的無私協助。  
  • 上一篇ORM 是什嗎?
  • 下一篇.browser的解釋

(轉) 將VB.NET網站轉換成C#的全過程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.