~共通点・相違点・効率的な習得法~
.NET Framework や .NET Core/.NET 5+ のプロジェクトでは、Visual Basic (VB.NET) を扱う場面がまだまだ存在します。C#エンジニアとして活動していると、たとえばレガシーな社内ツールや古いWinFormsアプリの保守で VB.NET のコードを読む・修正する必要が出てくるかもしれません。
この記事では、C#経験者がVB.NETを効率的に学ぶための視点として、
- 共通点
- 相違点
- 速習のポイント
の3点に分けて解説します。
✅ 共通点:C#とVB.NETは「.NETファミリーの兄弟言語」
まず押さえておきたいのは、C#とVB.NETはどちらも.NET言語であり、以下のような共通点があります。
● 共通のランタイム(CLR)を使う
C#とVB.NETはどちらもCommon Language Runtime (CLR) 上で動作するため、生成されるIL(中間言語)コードは基本的に同じです。
● 同じ.NETクラスライブラリを使用する
たとえば以下のようなクラスは、C#でもVB.NETでも同じように使えます:
Dim list As New List(Of String)
list.Add("Hello")
List<string> list = new List<string>();
list.Add("Hello");
● 共通の機能群がある
- LINQ
- async/await(VB.NETは.NET 4.5以降で対応)
- Windows Forms / WPF
- ASP.NET MVC / Web API(VB.NETは限定的)
- 属性(Attributes)
- イベント/デリゲート(VB.NETでは「Event」キーワード)
つまり、「やりたいこと」は同じように実現可能です。
❗ 相違点:構文と慣習の違いに注意
共通点が多い一方で、構文の違いは注意が必要です。ここでは主な違いをいくつか紹介します。
1. 文末の構文
- C#はセミコロン(
;
)で文を終える - VB.NETはキーワードベースで、文末に
;
は不要
Dim x As Integer = 10
int x = 10;
2. ブロック構文の違い(If, Forなど)
VB.NETは明示的なブロックの終了を好みます。
If x > 0 Then
Console.WriteLine("Positive")
Else
Console.WriteLine("Negative")
End If
if (x > 0)
{
Console.WriteLine("Positive");
}
else
{
Console.WriteLine("Negative");
}
3. Case Sensitivity(大文字小文字)
- C#:大文字・小文字を区別する(
value
とValue
は別) - VB.NET:区別しない(
value
もValue
を同一視)
4. イベントの書き方
AddHandler button.Click, AddressOf Button_Click
button.Click += new EventHandler(Button_Click);
VB.NETは「AddHandler」「AddressOf」でイベントバインドを行います。
5. デフォルトプロパティ
VB.NETではプロパティの省略記法が使えます(C#では非推奨のIndexersで代替)。
Dim value = myDictionary("key")
🚀 速習のコツ:C#脳を活かした最短攻略法
C#エンジニアがVB.NETを「読めて書ける」状態になるには、以下のステップがおすすめです。
ステップ1:構文変換サイトを使う
まず「読める」ことを優先しましょう。
- Telerik Code Converter
- dotnetfiddle.net でVB.NET実行可能
' VB.NET
Dim result As String = String.Join(",", items.Where(Function(x) x.StartsWith("a")))
これをC#で見ると直感が湧くので、構文のマッピングができます。
ステップ2:サンプルコードを「写経」して手を動かす
C#の記憶を頼りに、VB.NETの書き方だけを真似る形で手を動かすと吸収が早くなります。
おすすめテーマ:
- 配列・リスト操作
- If / For / While の比較
- クラスとプロパティの定義
- イベント処理とフォーム操作(WinForms)
ステップ3:既存コードを読んでリファクタする
社内の既存VB.NETコードの「読みやすく整理する」タスクを引き受けると学習効率が跳ね上がります。
ステップ4:必要であれば「Option Strict On」 を意識する
VB.NETでは型の緩さがバグを生みやすくなります。
Option Strict On ' 型の厳密なチェックを有効にする
C#の感覚で型安全性を保つには必須です。
📝 まとめ:C#エンジニアのVB.NET習得ポイント
視点 | 内容 |
---|---|
ランタイム | 同じCLRを使う |
ライブラリ | .NET APIは共通 |
構文 | 文末記号、ブロック、イベント構文などが異なる |
慣習 | 大文字小文字の扱い、Option Strictなど |
学習法 | 構文変換 + 写経 + 既存コード読解 + 小さな改修 |
📚 参考リンク
✨ 最後に
VB.NETは今や主流ではありませんが、現場ではまだまだ現役のコードベースがあります。C#のスキルを活かして最小限の学習で対応できるのがVB.NETの良さでもあります。ぜひ「読めて・書けて・直せる」状態を目指しましょう!