Ответ 1
Если вы не можете найти хороший конвертер, вы всегда можете скомпилировать код С# и использовать dissasembler в Reflector, чтобы увидеть код Visual Basic, Некоторые имена переменных будут изменены.
При поиске в interweb для решения моих проблем с VB.net я часто нахожу полезные статьи по определенной теме, но код С#. Это не большая проблема, но стоило некоторое время преобразовать ее в VB вручную. Есть некоторые сайты, которые предлагают конвертеры кода от С# до VB и наоборот, но для устранения всех недостатков после того, как кодовое преобразование почти так же трудоемко, как и само по себе.
До сих пор я использую http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx
Знаете ли вы что-то лучше?
Если вы не можете найти хороший конвертер, вы всегда можете скомпилировать код С# и использовать dissasembler в Reflector, чтобы увидеть код Visual Basic, Некоторые имена переменных будут изменены.
Telerik делает отличный конвертер. http://converter.telerik.com/
SharpDevelop имеет встроенный переводчик между С# и VB.NET. Не идеальная мысль (например, необязательные значения в VB.NET не имеют эквивалента в С#, поэтому подпись метода конвертера должна быть отредактирована), но вы можете сэкономить некоторое время, так как вы делаете все операции внутри IDE а не веб-страницу (скопируйте код С#, вставьте, нажмите кнопку, скопируйте код VB.NET, вставьте в IDE: P)
Я думаю, что лучше всего учиться на другом языке, чтобы вы могли переписать вручную, там некоторые довольно сложные различия в некоторых аспектах, что я не уверен, что конвертер будет работать очень хорошо. Например, сравните мой перевод с С# на 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
С# из образца пользовательской активности, и, боюсь, я потерял ссылку на него. Но он содержит некоторое неприятное видение наследования (с точки зрения VB).
В настоящее время я использую эти два наиболее часто:
http://www.carlosag.net/tools/codetranslator/
Но у них также были некоторые успехи:
http://converter.atomproject.net/
Я использую бесплатный плагин Visual Studio 2012 с именем Language Convert
Он отлично работает в 2010/2012, к сожалению, пока не работает на VS 2013.
Конверсия не на 100% точна, но это определенно очень полезно, для запуска в первый раз это немного сложно, проверьте перед изображением ниже:
Последнее, что я проверил, SharpDevelop имеет один, и он тоже с открытым исходным кодом.
У Карлоса Агилара Мареса был онлайн-конвертер около 40 форвардов - Переводчик кода , но я бы согласился, что Reflector лучше ответ.
Вы можете загрузить свою DLL или EXE в Redgate (ранее Lutz Roeder's) .NET Reflector, выберите свой метод, а затем нужный язык из языковой комбо. Код выбранного метода будет отображаться на выбранном языке.
Надеюсь, это поможет.
Не отвечая на ваш вопрос, я скажу, что я был в аналогичной позиции.
Я понял, что образцы кода на С# были неудобными, когда я действительно начинал работать в .NET, но несколько недель назад в моем первом проекте (после того, как я больше познакомился с платформой .NET и самим VB.NET), я обнаружил что было интересно и иногда полезно перепроектировать код С#. Не только с точки зрения синтаксиса, но и для изучения тонких различий в подходе - полезно быть открытым в этом отношении.
Я придерживаюсь VB.NET, поскольку я все больше узнаю о структуре, но вскоре я окунусь в С# с намерением стать "многоязычным".
В настоящее время я использую плагин для VS2005, который я нашел в CodeProject (http://www.codeproject.com/KB/cs/Code_convert_add-in.aspx); он использует внешнюю службу (http://www.carlosag.net/Tools/CodeTranslator/) для выполнения перевода.
Иногда, когда я в автономном режиме, я использую инструмент конвертера (http://www.kamalpatel.net/ConvertCSharp2VB.aspx).
Вы можете попробовать этот converter. Существует функциональность для С# для VB и VB для С#.
Надеюсь, что это поможет.
В http://www.developerfusion.com/tools/convert/csharp-to-vb/ (новый url) теперь поддерживает синтаксис .NET 3.5 (благодаря ребятам #develop еще раз) и автоматически скопирует результаты в буфер обмена:)