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

时间:2020-03-06 14:19:14  来源:igfitidea点击:

在搜寻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中,选择方法,然后从语言组合中选择所需的语言。所选方法的代码将以所选语言显示。

我希望这有帮助。