以前VB.netで作成した簡単なアプリを、C#に変換してメンテできれば……と最近思っていました。
色々探した結果、Visual Studio 2015に、変換プラグインがあるということだったので試してみた結果を書いていきます。
環境
- Visual Studio Community 2015
- LanguageConverter
悪かった点
まずは悪い方から。
実際に変換してみて「ココはダメだったな…」というところを挙げていきます。
修正したポイントは、そこも書いていきます。
Formのデザイナ(xxx.Designer.cs)は、エラーによりデザイナを開けない
デザイナ内でエラーがある模様。ただ今のところ深追いはしていない。
イベントハンドラ系関数は、エラーのコメントが書かれている。
「// ERROR: Handles clauses are not supported in C#」がハンドラ関数にコメントされて出力されている。
紐づけがうまくできていないから……かな?
Split()が対応されなかった
Split()が対応されなかった。
string型のクラスメソッドに変わっているようですが、これがそのまま関数としてコールされている状態となっていました。
(まぁこれは仕方ない気がするが)
Dim str As String = "a,b,c,d" Dim ret() As String ret = Split(str, ",")
string str = "a,b,c,d"; string[] ret = str.Split(',');
配列は軒並み残念
配列要素指定が[]でなく()のままとなっていた。
その為修正が必要。
VBの場合、関数も配列も()で表現する為、ある意味仕方ないかもしれない。
そのシンボルの意味合いまで解析してたら可能かもしれないけど…
result(i) ' before
result[i] ' after
Asで型指定していないと、objectとして変換される
恐らく実質的な問題ないでしょうが、型指定なしはobject型として生成されるようです。
' vb Static beforeLv = 8
// C# static object beforeLv = 8;
まぁこれも仕方ないヤツ……というかある意味正しい気がするので大きなポイントではないですね。
よかった点
VBで作っていたコードを、大体C#化はしてくれたので、最初から作るという手間は多少省けましたね。
ただデザイナは死んでいたので、画面にコンポーネントがたくさんあったりすると痛手かもしれません……
あとがき
とりあえず小さめのプロジェクトなら、これで変換して多少手を加えるような形でいけそうですね。
大掛かりなのを想定すると……やはりキツイだろうなぁ…という予感しかしませんが……
他にも変換ツールはあるみたいなので、試してみたらまた違う結果なるかもしれませんね。