【VB】「VB.NET←→C#」コード変換ツール - 変換.tokyo | henkan.tokyo

【VB】「VB.NET←→C#」コード変換ツール

  
■【VB】「VB.NET←→C#」コード変換ツール

既存のVB.NETコードをC#コードに移し替えるような場合には、「VB.NET←→C#」コード変換ツールが便利です。
「VB.NET←→C#」コード変換ツールには次のようなものがあります。


●ソフトウェアをダウンロードして実行

・SharpDevelop(の一機能) 
http://www.icsharpcode.net

SharpDevelop


左がC#(変換前)で、右がVB.NET(変換後)のコードです。
お勧めですが、コメントが一部なくなります。

メニューの[Tools]-[Convert buffer C# to VB.NET](日本語では、[ソースをC#からVB.NETに変換])や[Convert buffer VB.NET to C#]を選ぶと変換できます。


●VB.NET→C#のコード変換

・The Code Project「GBVB - Converting VB.NET code to C#」
http://www.codeproject.com


★New!!(2014/09追記)
・.NET Reflector
http://www.red-gate.com

逆コンパイラ「.NET Reflector」によるコード変換になります。
.NET Reflectorは本来、.NETのアセンブリ(実行ファイルやDLLファイル)からソース・コードへの逆コンパイルを行うツールですが、逆コンパイルを行う際に、生成するコードの言語をC#やVBなどから選択できます(ほかにもIL、Delphi、マネージC++、Chrome(現Oxygene)からも選択可です)。

この機能を利用すれば、例えば、C#のコードをVisual Studioなどでコンパイルしてアセンブリを作成し、それを.NET ReflectorによりVBのコードへ逆コンパイルできるようになります。
これによりC#のコードをVBに変換できる、という仕組みです。

以下の画面は、MSDNのFileStreamクラスの解説ページにあるC#のサンプル・プログラムを、.NET ReflectorによりC#およびVBのコードに逆コンパイルした結果になります。


【サンプル】コンパイルしたC#のサンプル・プログラムからC#のソース・コードを復元

【VB】「VB.NET←→C#」コード変換ツール1

.NET Reflectorでアセンブリを開くには、画面左のペインにエクスプローラからファイルをドラッグ&ドロップするのが簡単です。

【VB】「VB.NET←→C#」コード変換ツール2

コンパイルしたC#のサンプル・プログラムからVBのソース・コードを復元します。


●Web上で可能なコード変換

・Convert C# to VB.NET, Convert VB.NET to C# - Developer Fusion

「Convert C# to VB.NET」と「Convert VB.NET to C#」は、Developer Fusionで提供されているサービスです。
Web上で変換できます。
テキストボックスにコードを入力し、その下にある「Convert to VB.NET(または、C#)」ボタンをクリックすると、コードが変換されます。

.NET Framework 2.0まで対応しているようですが、3.0以上はまだのようです。
精度はよく、お勧めです。ちなみに、SharpDevelopを基に作成されているということです。


・C# to VB.NET Translator - AspAlliance
C# to VB.NET Translator
2012/07/12現在、サイトが開けません。

「C# to VB.NET Translator」もWeb上で提供されているサービスで、C#からVB.NETへの変換に対応しています。
テキストボックス(「Paste C# code below:」と書かれている下)にC#のコードを入力し、「Translate」ボタンをクリックすると、VB.NETのコードに変換されます。
.NET Framework 2.0以上には対応していませんが、1.1以下であれば、かなり役に立ちます。


「C# to VB.NET Translator」を使用するに当たり、注意すべき点
・配列の大きさを指定して初期化するコードは正しく変換されません。
 例:「int[] i = new int [10] {};」は「Dim i(10) As Integer」と変換されます。
・条件式の「&&」や「||」は、「And」「Or」と変換されます。正しくは、「AndAlso」「OrElse」です。
・条件式が多少複雑になると、間違えて変換することもあります。
・文字列リテラルで@を使っている時にエラーが出ます。@をとり、""内の\もとってから変換した方が良いでしょう。
・try...catch...finally文で、catch文とfinally文の中身が削除されてしまうことがあります。

ただし、これらのツールで完璧にコードを変換できるわけではありません。
いくらVB.NETとC#の文法などが類似しているといっても、「言語の壁」は予想以上に厚いのです。

重要なのは「言語の壁」を熟知することです。
この本にはコードを変換する際の「言語の壁」が余すところなく書かれており、非常に重宝します。


by カエレバ
by カエレバ
by カエレバ
by カエレバ
by カエレバ
by カエレバ