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

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

问题描述:

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

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

你知道更好的东西?

+8

关闭,使我们永远不会知道,如果有是比2008年更好的一个 – kjack 2015-11-03 07:57:14

+0

ILSpy在2016年为我工作。几乎与接受的Reflector答案一样。 – mcfea 2016-01-29 16:47:34

+0

任何人在此登陆,我一直在使用[Econ Netvert](https://econnetvert.codeplex.com/)多年,并且大多数时间都能顺利运行,并且正在**脱机**。只要确保从提供者列表(右上角)中选择** ICSharp 4.0 **。请注意,它不处理一些新的语言结构(lambdas,匿名函数,空合并),但在95%的时间内工作正常。双向工作(C# VB.NET),也可以处理整个项目。请注意,该项目不再维护。 – dotNET 2017-11-23 08:53:20

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

+6

不幸的是,Reflector中的VB反编译器相当麻烦。通常你会得到编译代码,但会产生不同的结果。 试试这个作为测试用例来评估代码转换器: double x = 3/2; double y = 3.0/2; int z =(int)( - 3。5); “x”应该是1.0(很多转换器会生成导致x = 1.5的代码),y应该是1.5,z应该是-3(很多转换器会生成导致z = -4的代码) – Daniel 2009-07-31 19:27:06

Telerik有a good converter这是基于SharpDevelop多年来一直很好的工作,虽然它已经几年没有更新(由于它是基于SharpDevelop)。

我最近遇到了一个roslyn based converter as well。我不知道它的工作效果如何,或者它的维护情况如何,但是因为它是开源的,你可以随时分叉并根据需要进行更新。

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

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

卡洛斯·阿吉拉尔母马已经有一个在线转换器约40 forevers - Code Translator但我会同意反射器是更好的答案。

虽然没有回答你的问题,但我会说我一直处于类似的位置。我发现C#中的代码示例在我刚开始使用.NET时非常尴尬,但在第一个项目(在我对.NET框架和VB.NET本身更熟悉之后)进入了几个星期后,我意识到发现有必要对C#代码进行反向工程是有趣的,有时也是有益的。不仅在语法方面,还要了解方法中细微的差异 - 在这方面开放思想很有用。

随着我越来越多地了解框架,我坚持使用VB.NET,但不久之后,我将倾向于转向C#,目的是成为“多语言”。

目前我使用的是我在CodeProject上找到的VS2005插件(http://www.codeproject.com/KB/cs/Code_convert_add-in.aspx);它使用外部服务(http://www.carlosag.net/Tools/CodeTranslator/)来执行翻译。

偶尔,当我离线时,我使用转换工具(http://www.kamalpatel.net/ConvertCSharp2VB.aspx)。

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

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

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

我希望这会有所帮助。

您可以试试这个converter。有C#到VB和VB到C#的功能。

希望这会有所帮助。

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

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

的转换不是100%准确,但绝对是非常有帮助的,推出的第一次是有点棘手,检查下面的图像之前:enter image description here