在搜索interweb以寻找我的VB.net问题的解决方案时,我经常会找到有关特定主题的有用文章,但代码是C#。这不是什么大问题,但是手动将它转换为VB需要一些时间。 有些网站提供从C#到VB的代码转换器,反之亦然,但是在代码转换之后修复所有缺陷几乎和我自己做的一样耗费时间。
直到现在我正在使用http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
你知道更好的事吗?
答案 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)
我目前最经常使用这两种方式:
http://www.carlosag.net/tools/codetranslator/
但是这些其他人也取得了一些成功:
http://converter.atomproject.net/
答案 5 :(得分:5)
我使用的是名为Language Convert
的免费Visual Studio 2012插件它在2010/2012完美运作,遗憾的是还没有在VS 2013工作。
转换不是100%准确,但它绝对非常有用,首次启动时有点棘手,请在下图中查看:
答案 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人员),并会自动将结果复制到剪贴板:)