-
将VB.NET网站转换成C#的全过程
前两天看到一个比较不错的网站,可惜是用vb.net写的,俺弄不大明白,于是心血来潮想把它全部转换成C#代码的。花了N长时间,问了几多人,费了不少神,总算是能让网站在C#下马马虎虎的跑了,不小心还喜欢蹦出个鲜红夺目的错误信息,真是让人战战兢兢。
总结的经验教训就是:没事别再这么干了,有这些闲功夫不如把这两种语言都弄懂,或者把网站重写。大家看看我转化的详细过程,估计也会知难而退的。
一、代码转化的几种方式
1、 通过工具直接转化
第一款:VB.net to C# Converter
http://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 Assistant
http://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 .NET
http://www.e-iceblue.com/
自称是市面上最好的VB & VB.net into C#工具,我反正是没用过,149美元能买多少馅饼、火腿肠、方便面啊,要是都换成白面馒头,可有一大车呢。
另外贴一款VB.NET to C# 的工具地址,这类解决方案较多,就不赘述了。
http://csharpconverter.claritycon.com/Default.aspx
2、在线WebService调用
http://www.kamalpatel.net/
微软最有价值专家的解决方案,网上有多家BLOG介绍过,他的C# to VB.NET开发的相当成功,国内有款转换软件叫“WebServiceDemo.exe”,就是调用他的引用。后来推出的VB.NET to C#版本,名气虽大,就是经常不能用。
3、 在线转换服务
将转换逻辑封装在服务器上,你把代码Ctrl+C上去,点“转换”,人家就把转换好的代码给你显示在页面上。
Developer fusion
http://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.IsPostBack
Session("")---------------------------------à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
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的朋友。
感谢宋老师的无私帮助。
出处:https://www.cnblogs.com/cngunner/archive/2006/01/16/318309.html
总结的经验教训就是:没事别再这么干了,有这些闲功夫不如把这两种语言都弄懂,或者把网站重写。大家看看我转化的详细过程,估计也会知难而退的。
一、代码转化的几种方式
1、 通过工具直接转化
第一款:VB.net to C# Converter
http://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 Assistant
http://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 .NET
http://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.aspx
2、在线WebService调用
http://www.kamalpatel.net/
微软最有价值专家的解决方案,网上有多家BLOG介绍过,他的C# to VB.NET开发的相当成功,国内有款转换软件叫“WebServiceDemo.exe”,就是调用他的引用。后来推出的VB.NET to C#版本,名气虽大,就是经常不能用。
3、 在线转换服务
将转换逻辑封装在服务器上,你把代码Ctrl+C上去,点“转换”,人家就把转换好的代码给你显示在页面上。
Developer fusion
http://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.IsPostBack
Session("")---------------------------------à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 Structure Comments Data Types Constants Enumerations |
Operators Choices Loops Arrays Functions |
Strings Exception Handling Namespaces Classes / Interfaces Constructors / Destructors |
Objects Structs Properties Delegates / Events Console I/O File I/O |
由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的朋友。
感谢宋老师的无私帮助。
出处:https://www.cnblogs.com/cngunner/archive/2006/01/16/318309.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式