Skip to content

MS_VBToCSharpConversion

nishi_74322014 edited this page Aug 12, 2026 · 1 revision

VB ⇔ C Sharp 変換

概要

メモです。

補足(前提): VB.NETC#
同じ .NET(CLR / BCL)上で動くため、
相互変換は「言語の書き換え」に留まり、
VB 6.0 → VB.NET のような基盤ごとの移行とは難易度が桁違いである。
多くの構文は機械的に対応づけられる。

詳細

Sharp Develop(MS_SharpDevelop.md

私は、Sharp Develop ver4.4 を使ってました。
(Open棟梁の VB プロジェクトを作成する際に)

補足(最新化:現在使える変換ツール): SharpDevelop は
開発終了(2016 年頃)しているため、現在は以下が使われる。

ツール 形態 備考
ICSharpCode.CodeConverter VS 拡張 / オンライン SharpDevelop チームの後継。事実上の標準
Telerik Code Converter オンライン 手軽。断片向け
各種 AI コーディング支援 IDE 拡張 文脈を見て書き換えられる(Copilot

ICSharpCode.CodeConverter は Roslyn ベースで、
プロジェクト単位の変換にも対応する。

変換で詰まりやすい点

補足: 機械変換で通っても、意味が変わることがある箇所。

項目 VB C# 注意
既定の厳密性 Option Strict Off が既定になりがち 常に静的 暗黙の型変換・レイトバインドが消えるため、変換後にコンパイル エラーが多発する
配列の宣言 Dim a(10)要素数 11 new int[10] は 10 オフバイワンを生みやすい
文字列比較 =Option Compare に依存 常に序数比較 Option Compare Text だと大文字小文字を無視していた
Nothing 値型に代入すると既定値 null は参照型のみ Nothingdefault が正しいことがある
整数除算 \ が整数除算、/ は常に浮動小数点 / が型依存 / をそのまま移すと結果が変わる
イベント Handles += で購読 デザイナ生成コードの扱いが変わる
On Error Resume Next あり 無し 設計ごと見直しが必要

特に 整数除算(/\配列の上限 は、
コンパイルが通るのに結果だけが変わるため、発見が遅れやすい。

変換後は必ずテストで確認すること
単体・結合テスト方式を参照)。

参考


Tags: 移行, .NET開発, プログラミング

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally