1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

~共通点・相違点・効率的な習得法~

.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でも同じように使えます:

VB
Dim list As New List(Of String)
list.Add("Hello")
C#
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はキーワードベースで、文末に;は不要
VB
Dim x As Integer = 10
C#
int x = 10;

2. ブロック構文の違い(If, Forなど)

VB.NETは明示的なブロックの終了を好みます。

VB
If x > 0 Then
    Console.WriteLine("Positive")
Else
    Console.WriteLine("Negative")
End If
C#
if (x > 0)
{
    Console.WriteLine("Positive");
}
else
{
    Console.WriteLine("Negative");
}

3. Case Sensitivity(大文字小文字)

  • C#:大文字・小文字を区別する(valueValueは別)
  • VB.NET:区別しないvalueValueを同一視)

4. イベントの書き方

VB
AddHandler button.Click, AddressOf Button_Click
C#
button.Click += new EventHandler(Button_Click);

VB.NETは「AddHandler」「AddressOf」でイベントバインドを行います。


5. デフォルトプロパティ

VB.NETではプロパティの省略記法が使えます(C#では非推奨のIndexersで代替)。

VB
Dim value = myDictionary("key")

🚀 速習のコツ:C#脳を活かした最短攻略法

C#エンジニアがVB.NETを「読めて書ける」状態になるには、以下のステップがおすすめです。


ステップ1:構文変換サイトを使う

まず「読める」ことを優先しましょう。

VB
' 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では型の緩さがバグを生みやすくなります。

VB
Option Strict On ' 型の厳密なチェックを有効にする

C#の感覚で型安全性を保つには必須です。


📝 まとめ:C#エンジニアのVB.NET習得ポイント

視点 内容
ランタイム 同じCLRを使う
ライブラリ .NET APIは共通
構文 文末記号、ブロック、イベント構文などが異なる
慣習 大文字小文字の扱い、Option Strictなど
学習法 構文変換 + 写経 + 既存コード読解 + 小さな改修

📚 参考リンク


✨ 最後に

VB.NETは今や主流ではありませんが、現場ではまだまだ現役のコードベースがあります。C#のスキルを活かして最小限の学習で対応できるのがVB.NETの良さでもあります。ぜひ「読めて・書けて・直せる」状態を目指しましょう!

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?