43

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

直到现在我正在使用http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx

你知道更好的吗?

4

13 回答 13

23

Telerik 有一个很好的转换器,它基于 SharpDevelop,多年来运行良好,尽管它多年来没有更新(因为它基于 SharpDevelop)。

我最近也遇到了一个基于 roslyn 的转换器。我不知道它工作得如何或维护得如何,但由于它是开源的,你可以随时 fork 并根据需要更新它。

于 2008-09-17T22:36:41.547 回答
18

如果找不到好的转换器,可以随时编译 c# 代码并使用Reflector中的反汇编器来查看 Visual Basic 代码。一些变量名会改变。

于 2008-09-17T22:35:33.437 回答
13

我目前最常使用这两个:

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/

于 2012-11-15T13:51:19.287 回答
12

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

于 2008-09-17T22:40:18.213 回答
11

我认为最好的办法是学习足够的其他语言,以便您可以手动重写,在某些方面存在一些相当困难的差异,我不确定转换器是否能很好地处理。例如,比较我从 C# 到 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

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

于 2008-09-22T10:27:59.733 回答
5

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

它在 2010/2012 上完美运行,不幸的是还没有在 VS 2013 上运行。

转换不是 100% 准确,但绝对是非常有帮助的,第一次启动有点棘手,请检查下图:在此处输入图像描述

于 2014-05-07T08:48:35.877 回答
4

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

于 2008-09-17T22:40:11.820 回答
3

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

我希望这有帮助。

于 2008-09-27T16:53:29.303 回答
3

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

希望这可以帮助。

于 2012-03-28T18:28:03.017 回答
2

Carlos Aguilar Mares 已经有一个在线转换器大约 40 个永远 -代码翻译器, 但我同意 Reflector 是更好的答案。

于 2008-09-17T22:54:46.103 回答
2

虽然没有回答你的问题,但我会说我一直处于类似的位置。

当我真正开始使用 .NET 时,我意识到 C# 中的代码示例很尴尬,但是在我的第一个项目几周​​后(在我更加熟悉 .NET 框架和 VB.NET 本身之后),我发现它是必须对 C# 代码进行逆向工程,这很有趣,有时也是有益的。不仅在语法方面,而且还学习方法上的细微差别——在这方面保持开放的心态很有用。

随着我对该框架的了解越来越多,我坚持使用 VB.NET,但不久之后,我将深入研究 C#,以期成为“多语言”。

于 2008-09-18T09:42:26.780 回答
2

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

于 2008-09-22T09:56:42.320 回答
1

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

于 2008-09-27T16:41:05.977 回答