最好的C#到VB.net转换器是什么?
在搜寻Internet上的VB.net问题解决方案时,我经常会找到有关特定主题的有用文章,但是代码是C#。那不是什么大问题,但是手动将其转换为VB会花费一些时间。
有一些站点提供Cto VB的代码转换器,反之亦然,但是修复代码转换后的所有缺陷几乎与最初自己进行时一样耗时。
到目前为止,我正在使用http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
你知道更好吗?
解决方案
如果找不到合适的转换器,则可以始终编译ccode并在Reflector中使用反汇编程序查看Visual Basic代码。一些变量名将更改。
Telerik具有一个基于SharpDevelop的出色转换器,尽管多年来没有进行过更新(由于它基于SharpDevelop),但多年来一直运行良好。
我最近也遇到了一个基于roslyn的转换器。我不知道它的运行状况或者维护程度如何,但是由于它是开源的,我们可以随时对其进行分叉并根据需要进行更新。
最后我检查了一下,SharpDevelop有一个,它也是开源的。
SharpDevelop在Cand VB.NET之间具有内置的转换器。并不是很完美的想法(例如,VB.NET中的可选值在C#中没有等效项,因此必须编辑转换器方法的签名),但是由于可以在IDE中进行所有操作,因此可以节省一些时间。而不是网页(复制Ccode,粘贴,点击按钮,复制VB.NET代码,粘贴在IDE:P上)
卡洛斯·阿吉拉尔·马雷斯(Carlos Aguilar Mares)拥有大约40个永远的Code Translator在线转换器,但我同意Reflector是更好的答案。
在不回答问题的同时,我会说我也处于类似的位置。
当我真正开始使用.NET时,我意识到Cwe的代码示例很尴尬,但是在我的第一个项目开始几周后(当我对.NET框架和VB.NET本身越来越熟悉之后),我发现这很有趣有时需要对Ccode进行逆向工程。不仅在语法上,而且要学习方法上的细微差异,因此在这方面持开放态度非常有用。
随着我对框架的了解越来越多,我一直坚持使用VB.NET,但是不久以后,我将深入研究C,以期成为"多语言"。
目前,我使用在CodeProject(http://www.codeproject.com/KB/cs/Code_convert_add-in.aspx)上找到的VS2005插件。它使用外部服务(http://www.carlosag.net/Tools/CodeTranslator/)进行翻译。
有时,当我离线时,我会使用转换器工具(http://www.kamalpatel.net/ConvertCSharp2VB.aspx)。
我认为最好的办法是学习其他语言,以便我们可以手工重写。在某些方面存在一些相当困难的差异,我不确定转换器是否可以很好地处理。例如,比较以下Cto VB的翻译:
public class FileSystemEventSubscription : EventSubscription { private FileSystemWatcher fileSystemWatcher; public FileSystemEventSubscription(IComparable queueName, Guid workflowInstanceId, FileSystemWatcher fileSystemWatcher) : base(queueName, workflowInstanceId) { this.fileSystemWatcher = fileSystemWatcher; }
变成
Public Class FileSystemEventSubscription Inherits EventSubscription Private myFileSystemWatcher As FileSystemWatcher Public Sub New(ByVal QueueName As IComparable, ByVal WorkflowInstanceID As Guid, ByVal Watcher As FileSystemWatcher) MyBase.New(QueueName, WorkflowInstanceID) Me.myFileSystemWatcher = Watcher End Sub
"自定义活动框架"示例中的Cis,恐怕我已经失去了它的链接。但是它包含一些令人讨厌的继承(从VB的角度来看)。
http://www.developerfusion.com/tools/convert/csharp-to-vb/(新网址)中的一个现在支持.NET 3.5语法(再次感谢#develop家伙),并将自动复制结果到剪贴板:)
我们可以将DLL或者EXE加载到Redgate(以前是Lutz Roeder的).Net Reflector中,选择方法,然后从语言组合中选择所需的语言。所选方法的代码将以所选语言显示。
我希望这有帮助。