ここでは、Visual Basic .NET 2003における言語仕様の変更点について検証していきます。 .NET Framework SDK v1.1またはVisual Studio .NET 2003がインストールされていることが必要ですが、VS.NET 2003が無いのでここではSDKのみを用いてコマンドラインからコンパイルしています。
なお、文章中でVB7.0, VB7.1という表記をすることがありますが、VB7.0はVisual Basic .NET、VB7.1はVisual Basic .NET 2003を示します。
ループ変数
VB7.0以前では、For文で用いるループ変数はあらかじめ次のように宣言されている必要がありました。
その一方、C++やC#では、ループ内でのみ用いられるループ変数は、次のようにfor文の中で宣言することができました。
VB7.1では、このようなループ変数の宣言をFor文の中で行うことを許可しています。 上記のC#コードと全く同じコードをVB7.1で記述すると次のようになります。
試しに、次のコードを.NET Framework Version 1.0のvbc.exe(VB7.0コンパイラ)と.NET Framework Version 1.1のvbc.exe(VB7.1コンパイラ)とでコンパイルしてみました。 コンパイラの出力結果と、実行結果も一緒に挙げておきます。
見ての通り、v1.0では全く文法エラーになってしまうのに対し、v1.1では問題なくコンパイルが成功しています。 また、その実行結果も意図した通りにものになっています。 このように、VB7.1ではC++やC#と同じような記法でループ変数を宣言できるようになっています。
ただし、注意しておくべきこととして、このループ変数のスコープがあります。 C++やC#と同様、このように宣言したループ変数は、ループの中でのみ有効になります。 従って、次のようなコードはコンパイルエラーになります。
このようなループ変数はFor文だけではなくFor Each文に対しても使用することができます。 この表記はC#におけるforeach文とほとんど同様の形式と言えます。
ビットシフト演算子
C/C++やC#にはビットシフト演算子<<と>>が存在します。 たとえば、C#でビットシフト演算子を使った例を挙げると次のような感じになります。
VB7.1でもビットシフト演算子が導入されました。 演算子にはC++やC#と同じく、左シフトなら<<、右シフトなら>>の記号を用います。 ビットシフト演算子はByte, Short, Integer, Longなどの整数型のみに対して用いることができます。 次のコードはVB7.1でビットシフト演算子を使った例です。 上記のC#コードとほぼ等価なコードです。
この例で挙げたコードのように、VB7.1ではほとんどC++/C#と代わらないビットシフト演算をVB.NETでも行えるようになりました。 最後に、ビットシフト演算子を使ったソースコードをVB7.0でコンパイルしようとするとどのようなエラーが出力されるかを見てみることにします。