連載
プロフェッショナルVB.NETプログラミング
第26回 言語の動作を選択するオプション(前編)
(株)ピーデー
川俣 晶
2002/11/23
|
|
オプション指定の適用範囲
プロジェクトのプロパティでの指定は、プロジェクト全体に有効である。例えば、以下のようなソース・コードを持つ2つのフォームを含むプロジェクトがあったとする。
1: Public Class Form1
2: Inherits System.Windows.Forms.Form
3:
4: …Windows フォーム デザイナで生成されたコード…
5:
6: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
7: a = 1
8: Trace.WriteLine(a)
9: End Sub
10: End Class
|
|
宣言されていないローカル変数を含む第1のフォーム |
2つ目のフォーム
1: Public Class Form2
2: Inherits System.Windows.Forms.Form
3:
4: …Windows フォーム デザイナで生成されたコード…
5:
6: Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
7: b = 1
8: Trace.WriteLine(b)
9: End Sub
10: End Class
|
|
宣言されていないローカル変数を含む第2のフォーム |
この2つのソース・コードには、どちらも、宣言されていないローカル変数が含まれている。これをビルド可能にするために、プロジェクトのプロパティを設定するとすれば、1回だけプロパティ中の[Option Explicit]をOffに切り替えるだけでよい。
しかし、Option Explicit文をソース・コードに挿入する方法を使う場合は、1回では済まない。以下のように1つ目のフォームのソース・コードにのみOption Explicit Offを挿入してみよう。
1: Option Explicit Off
2:
3: Public Class Form1
4: Inherits System.Windows.Forms.Form
5:
6: …Windows フォーム デザイナで生成されたコード…
7:
8: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
9: a = 1
10: Trace.WriteLine(a)
11: End Sub
12: End Class
|
|
宣言されていないローカル変数を含み、Option Explicit Offが指定された第1のフォーム |
1: Public Class Form2
2: Inherits System.Windows.Forms.Form
3:
4: …Windows フォーム デザイナで生成されたコード…
5:
6: Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
7: b = 1
8: Trace.WriteLine(b)
9: End Sub
10: End Class
|
|
宣言されていないローカル変数を含み、Option Explicit Offが指定されていない第2のフォーム |
これをビルドすると、以下のようにエラーになる。
1: Q:\aWrite\@it\vbn\022\smpl\Sample003n2\Form2.vb(46) : error BC30451: 名前 'b' は宣言されていません。
2: Q:\aWrite\@it\vbn\022\smpl\Sample003n2\Form2.vb(47) : error BC30451: 名前 'b' は宣言されていません。
|
|
上記2つのフォームを含むプロジェクトをビルドしたときのコンパイル・エラー |
つまり、Option Explicit Offは挿入されたソース・コードにしか効力を発揮しておらず、複数のソース・コードから構成されるプロジェクトの場合、必要なすべてのソース・コードに挿入する必要があるということである。これはデメリットのように思えるかもしれないが、メリットになる場合もある。例えば、寄せ集めのソース・コードでプロジェクトを構成する場合、前提とするオプション設定が異なるソース・コードが含まれるかもしれない。その場合、ソース・コード単位でオプション文を指定して、設定を切り替えることができる。
Option Explicit
4つのオプションのうち、まずはOption Explicit(explicitは「明示的な」の意)について説明しよう。といっても、すでに何度も取り上げているので、再度サンプル・プログラムを掲載することはしない。
まだ述べていない注意点は、VB 6とVB.NETで構文に違いがあることである。VB 6では、Option Explicit文の有無により機能の指定と無指定を区別したが、VB.NETでは、Option Explicitの後に、OnまたはOffというキーワードを付け加えることでも区別可能である。
もし、OnもOffも付けない場合は、Offであると見なされるとVisual Basic言語リファレンスに記述されている。しかし筆者が試したところ、OnもOffも付けない場合はOnとして機能しているようである。通常、VS.NETのIDEでコーディングしている場合は、Option Explicit+[Enter]と入力すると自動的にOnが補われる。Onを削除した場合でも、自動的にOnが補われる。そのため、通常利用時には、特に省略時の値を意識する必要はないだろう。
Insider.NET 記事ランキング
本日
月間