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

时间:2008-09-17 22:30:34

标签: c# vb.net converter

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

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

你知道更好的事吗?

13 个答案:

答案 0 :(得分:22)

Telerik的a good converter基于SharpDevelop多年来运作良好,但多年来一直没有更新(因为它基于SharpDevelop)。

我最近遇到roslyn based converter as well。我不知道它的工作情况有多好或维护得多好,但由于它是开源的,你可以随时分叉并根据需要进行更新。

答案 1 :(得分:18)

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

答案 2 :(得分:12)

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

答案 3 :(得分: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#来自Custom Activity Framework示例,我担心我已经丢失了它的链接。但它包含一些讨厌的遗传(从VB的角度来看)。

答案 4 :(得分:11)

答案 5 :(得分:5)

我使用的是名为Language Convert

的免费Visual Studio 2012插件

它在2010/2012完美运作,遗憾的是还没有在VS 2013工作。

转换不是100%准确,但它绝对非常有用,首次启动时有点棘手,请在下图中查看:enter image description here

答案 6 :(得分:4)

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

答案 7 :(得分:3)

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

我希望这会有所帮助。

答案 8 :(得分:3)

你可以尝试这个converter。 C#到VB和VB到C#都有功能。

希望这有帮助。

答案 9 :(得分:2)

卡洛斯·阿吉拉尔·马雷斯(Carlos Aguilar Mares)有一个约40名外国人的在线转换器 - Code Translator 但我同意Reflector是更好的答案。

答案 10 :(得分:2)

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

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

我正在坚持使用VB.NET,因为我越来越多地了解这个框架,但不久之后,我将把我带入C#,意图成为“多语言”。

答案 11 :(得分: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)。

答案 12 :(得分:1)

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