連載

プロフェッショナルVB.NETプログラミング

第26回 言語の動作を選択するオプション(前編)

(株)ピーデー
川俣 晶
2002/11/23

Page1 Page2 Page3

オプション指定の適用範囲

 プロジェクトのプロパティでの指定は、プロジェクト全体に有効である。例えば、以下のようなソース・コードを持つ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が補われる。そのため、通常利用時には、特に省略時の値を意識する必要はないだろう。


 INDEX
  連載 プロフェッショナルVB.NETプログラミング
  第26回 言語の動作を選択するオプション(前編)
    1.オプション機能
  2.オプション指定の適用範囲
    3.Option Strict
 
「プロフェッショナルVB.NETプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間