最好的C#到VB.net转换器是什么?

What is the best C# to VB.net converter?

在搜寻Internet上的VB.net问题解决方案时,我经常会找到有关特定主题的有用文章,但是代码是C#。 那不是什么大问题,但是需要花费一些时间将其手动转换为VB。
有些站点提供从C#到VB的代码转换器,反之亦然,但是要修复所有代码转换后的缺陷,几乎要比我自己先完成代码转换要耗时得多。

到目前为止,我正在使用http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

你知道更好吗?


Telerik具有一个基于SharpDevelop的出色转换器,尽管多年来没有进行过更新(由于它基于SharpDevelop),但多年来一直运行良好。

我最近也遇到了一个基于roslyn的转换器。我不知道它的运行状况或维护程度如何,但是由于它是开源的,因此您可以随时对其进行分叉并根据需要进行更新。


如果找不到合适的转换器,则可以始终编译c#代码,并在Reflector中使用反汇编程序查看Visual Basic代码。一些变量名将更改。


SharpDevelop在C#和VB.NET之间具有内置的转换器。并不是很完美的想法(例如,VB.NET中的可选值在C#中没有等效项,因此必须编辑转换器方法的签名),但是由于可以在IDE中进行所有操作,因此可以节省一些时间。而不是网页(复制C#代码,粘贴,点击按钮,复制VB.NET代码,粘贴在IDE:P上)


我目前最常使用这两个:

http://converter.telerik.com/

http://www.carlosag.net/tools/codetranslator/

但是在其他方面也取得了一些成功:

http://converter.atomproject.net/

http://www.dotnetspider.com/convert/Csharp-To-Vb.aspx

http://www.developerfusion.com/tools/convert/csharp-to-vb/


我认为最好的办法是学习其他语言,以便您可以手工重写。在某些方面存在一些相当困难的差异,我不确定转换器是否可以很好地处理。例如,比较以下内容从C#到VB的翻译:

1
2
3
4
5
6
7
8
9
public class FileSystemEventSubscription : EventSubscription
{
    private FileSystemWatcher fileSystemWatcher;

    public FileSystemEventSubscription(IComparable queueName,
        Guid workflowInstanceId, FileSystemWatcher fileSystemWatcher) : base(queueName, workflowInstanceId)
    {
        this.fileSystemWatcher = fileSystemWatcher;
    }

变成

1
2
3
4
5
6
7
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

C#来自"自定义活动框架"示例,恐怕我已经失去了它的链接。但是它包含一些令人讨厌的继承(从VB角度来看)。


我正在使用名为Language Convert的免费Visual Studio 2012插件

它在2010/2012上完美运行,很遗憾,在VS 2013上还不能使用。

转换不是100%准确的,但是对于第一次启动它有点棘手,请务必检查一下下图:enter image description here


最后我检查了一下,SharpDevelop有一个,它也是开源的。


您可以尝试这个转换器。有C#到VB和VB到C#的功能。

希望这可以帮助。


您可以将DLL或EXE加载到Redgate(以前是Lutz Roeder的).Net Reflector中,选择方法,然后从语言组合中选择所需的语言。所选方法的代码将以所选语言显示。

我希望这有帮助。


目前,我使用在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)。


在不回答您的问题的同时,我会说我也处于类似的位置。

当我真正开始使用.NET时,我意识到C#中的代码示例很尴尬,但是在我的第一个项目开始几周后(我对.NET框架和VB.NET本身越来越熟悉之后),我发现对C#代码进行反向工程很有意思,有时甚至是有益的。不仅在语法上,而且还学习方法上的细微差异-在这方面持开放态度非常有用。

随着我对框架的了解越来越多,我一直坚持使用VB.NET,但是不久以后,我将全神贯注于C#,以期成为"多语言"。


卡洛斯·阿吉拉尔·马雷斯(Carlos Aguilar Mares)的在线转换器可以永久保存大约40个代码转换器-但我同意Reflector是更好的答案。


现在,位于http://www.developerfusion.com/tools/convert/csharp-to-vb/(新网址)的那个支持.NET 3.5语法(再次感谢#develop伙计们),它将自动复制结果到剪贴板:)


推荐阅读