連載プロフェッショナルVB.NETプログラミング第17回 名前空間とImports文(前編) |
デフォルトの名前空間を指定するImports文
名前空間の機能は便利だが、これを多用すると、全体的にソース・コードが長くなってしまう。同じ名前のクラスが出現する頻度はさして高いものではなく、それ以外の状況ではできるだけソースを短く書きたいと考えることは、当然の成り行きといえる。これに対応するために、VB.NETにはImports文が存在する。Imports文は、名前空間名を省略したときのデフォルト名前空間名を指定するために使用することができる。例えば、名前空間名を省略したときに、Sample003n.MySpace1であると指定したサンプル・プログラムが以下のものである。
|
|
デフォルト名前空間名を指定するためにImports文を使用したVB.NETのサンプル・プログラム3 |
これを実行すると以下のようになる。
|
|
サンプル・プログラム3の実行結果 |
25行目では、名前空間名の指定を省略して、いきなりMyClass1というクラス名を記述している。このソースには、MyClass1というクラスは2つあるが、コンパイラは混乱することはない。なぜなら、1行目のImports文により、省略時のデフォルト名前空間名がSample003n.MySpace1であると指示されているからだ。そのため、25行目のMyClass1は名前空間Sample003n.MySpace1(つまり、「Namespace MySpace1」で宣言された名前空間)であることが明確なのである。一方、もう1つの名前空間に属するMyClass1を利用するには、依然として、26行目のように、名前空間名を明示した長い書き方を必要としている。
Imports文は1つに限らずいくつ書いてもよい。つまり、デフォルトの名前空間名は、いくつでも持つことができる。クラス名の重複など、そうめったに起こることではないので、複数のデフォルトの名前空間名を指定しても、通常は問題は起こらない。もし、名前の重複が起きた場合だけ、名前空間名を含むフルネームで記述するようにすれば、問題はない。
ちなみに、実際に利用する場合は、1つのソースに全部収まっているわけではなく、いくつものソースに分かれていることが多いだろう。例えば、以下のような感じである。
まずクラスの定義となるソース・コード。
|
|
サンプル・プログラム3のクラス定義部分を1つのソースにしたVB.NETのサンプル・プログラム4(プロジェクト名は「Sample004n」とする) |
次にクラスの利用を記述したソース・コード。
|
|
サンプル・プログラム4を利用するVB.NETのサンプル・プログラム5 |
別名を定義するImports文
Imports文には、デフォルトの名前空間名を指定する機能のほかに、名前空間名やクラス名の別名を定義する機能がある。例えば、Sample005n.MySpace1という名前空間名を「a」という名前で指定可能にし、Sample005n.MySpace2.MyClass1というクラス名を「b」という名前で指定可能にして利用したサンプル・プログラムを以下に示す(Sample005nはこのサンプル・プログラムのプロジェクト名)。
|
|
Imports文により名前空間名やクラス名の別名を定義したVB.NETのサンプル・プログラム6 |
これを実行すると以下のようになる。
|
|
サンプル・プログラム6の実行結果 |
このプログラムでは、1〜2行目で、キーワード「a」が名前空間Sample005n.MySpace1であるとし、キーワード「b」がSample005n.MySpace2.MyClass1であると宣言している。そのため、26行目では、
Sample005n.MySpace1.MyClass1.MyMethod1()
と記述する代わり、
a.MyClass1.MyMethod1()
と記述することで等価な機能を短く記述している。同様に27行目では、
Sample005n.MySpace2.MyClass1.MyMethod1()
と記述する代わりに、
b.MyMethod1()
と短く記述するだけで済んでいる。
この機能は、普通に記述すると長くなる指定を、短く読みやすくするために使うことができる。特に、同じクラス名などが存在する場合に、適切な別名を用意するために使用すると、読みやすいプログラム・コードを記述するために利用できるだろう。
次回予告
次回、「名前空間とImports文(後編) 」では、クラス・ライブラリを利用する場合の注意点など、さらに詳しく名前空間とImports文について見ていく予定だ。
INDEX | ||
連載 プロフェッショナルVB.NETプログラミング | ||
第17回 名前空間とImports文(前編) | ||
1.名前空間の効能 | ||
2.デフォルトの名前空間を指定するImports文 | ||
「プロフェッショナルVB.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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|