■ プロパティの変更
- Caption プロパティは Text プロパティに
いくつかのプロパティが変更されています。
代表例は、フォームやラベルコントロールの文字列を設定する Caption プロパティが、Text プロパティになったことです。ほかにも、リストボックスやコンボボックスコントロールの ListIndex プロパティが SelectedIndex プロパティに変更されています。
これらは、他の .NET 言語とプロパティ名をそろえるためです。
アップグレードウィザードによって、これらのプロパティを利用しているコードはすべて自動的に変更されます。
[ Visual Basic 6.0 のコード]
Label1.Caption = "Hello"
[ Visual Basic .NET にアップグレード]
Label1.Text = "Hello"
ですから、ほとんどの場合、問題はありません。
ただし、実行時バインディングを利用していると、正しく変更されません。たとえば Visual Basic 6.0 で、
Dim obj As Object
Set obj = Form1.Label1
obj.Caption = "Hello"
というコードを記述していた場合、「obj」 の型が特定できないため、変更してくれません。そのため、手動で Catpion プロパティを Text プロパティに変更しなくてはなりません。
Visual Basic .NET で手動変更をなくすためには、上のような実行時バインディングではなく事前バインディングを使用します。つまり、あらかじめ、
Dim obj As Label
Set obj = Form1.Label1
obj.Caption = "Hello"
のように Visual Basic 6.0 でコーディングしておくことをお勧めします。
このようにしておけば、「obj」 の型がラベルであることがわかるので、アップグレードウィザードが Caption プロパティを Text プロパティに変更してくれます。
オブジェクトを扱う変数は、Object 型や Variant 型として宣言するのではなく、可能な限り具体的なオブジェクトとして宣言するようにしてください。
よいプログラムを作成するために
Visual Basic .NET では、「適切なデータ型を宣言し、正しくデータを利用するプログラミング」 が求められます。なぜかというと、厳密な型チェックを行なうことでエラーの入り込みにくいプログラミングを実現するためです。
このことは、Visual Basic 6.0 でも推奨されていたことでした。ですから、Visual Basic 6.0 でも、きちんとデータ型を指定してプログラミングをすることで、よりエラーの入り込みにくいプログラムを作ることができ、同時に Visual Basic .NET での変更を軽減できます。
また、どうしても、実行時バインディングを利用したい場合には、明示的な変換関数を使用することをお勧めします。これにより、コードの意図がわかりやすくなり、プロジェクトの Visual Basic .NET への移行をスムーズにします。
Visual Basic .NET には、データ型の宣言を強制するための 「Option Strict On」 というオプションがあります。これは、「Option Explicit」 と同様、コードの先頭に記述します。
これにより、次の事柄ができなくなり、実行の安全性が高まります。
- 明示的なキャスト (型変換) なしで、データを異なる型に代入する
- 実行時バインディング
- As なしの宣言
- Object 型オブジェクトの使用制限 (=、<>、Is、TypeOf…Is 以外での使用不可)
コードで 「Option Strict」 を指定しない場合、プロジェクトのプロパティ ([共通プロパティ]-[ビルドプロパティ]) で設定可能です。この設定のデフォルトは 「Off」 になっています。適切なコーディングの強制のために頁単位で 「Option Strict On」 の記述、またはプロジェクト単位での設定をお勧めします。