VB 6とVB.NETの間には共通点も多いが、相違点も多い。まずは“論よりソース”ということで、小さなプログラムを比較してみることから始めよう。なお、この連載では、特に記さない限り、Visual Studio .NET(VB 6の場合はVisual Studio 6.0)上で[Windowsアプリケーション]のテンプレートによりプロジェクトを新規作成し、フォームのLoadイベント・ハンドラ(プログラムのロード時に実行されるイベント・ハンドラ)にサンプル・コードを書き込む方法をとるものとする。結果は、VB 6ならイミディエイト・ウィンドウ、VB.NETなら出力ウィンドウに表示させるように作成する。
まず、こんな小さなプログラムをVB 6で書いてみた。
1: Private Sub Form_Load()
2: a = 1
3: b = "2"
4: Debug.Print a + b
5: End Sub
では、これと同等のソース・コードをVB.NETで作成してみよう。Visual Studio .NET(以下VS .NET)で[Windowsアプリケーション]のテンプレートでプロジェクトを新規作成し、フォームをダブルクリックするとコード・ウィンドウが表示される。そこで以下のようにソースを書き込んで[F5]キーを押せば実行できる。
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim a, b
3: a = 1
4: b = "2"
5: Trace.WriteLine(a + b)
6: End Sub
サンプル・プログラム1をVB.NETで書き換えたサンプル・プログラム2
結果は同じく「3」となるが、いくつかの相違がソース上に現れていることが分かるだろう。まず、“Private Sub 〜”の宣言行の相違はここでは無視することにしよう。これはIDEが自動生成してくれたものなので、自分で書く必要がないからだ。次に気付くのは、VB 6のソースにはなかったDimステートメントだろう。VS .NETで作成したプロジェクトは、生成時のデフォルト設定で“Option Explicit機能”がオンとなっており、ソース・コード上に“Option Explicit”の文字が見えなくても、それが記述された場合と同等の効力を発揮する。つまり、VB.NETでは宣言されていない変数は使用できず、必ずDimステートメントで使用する変数を宣言しなければならないのである。なお、この設定は、プロジェクトのプロパティから変更することができる。しかし、通常はこの設定は変更せず、必ず変数宣言を行うように習慣付けた方がよいだろう。変数のスペル・ミスはソースを見ても気付きにくく、無駄な時間を使いがちである。これに対し宣言を習慣付ければ、変数のスペル・ミスをコンパイラが発見してくれる確率が高くなり、バグの早期発見に役立つはずだ。
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim a As Object, b As Object
3: a = 1
4: b = "2"
5: Trace.WriteLine(a + b)
6: End Sub