.NET TIPS

VB.NETでクラス名を省略してメソッドや定数を利用するには?

デジタルアドバンテージ
2004/01/09

 通常Visual Basic .NET(以下VB.NET)では、Importsステートメントで名前空間を指定することにより、コード内では名前空間部分を省略したクラスを記述することができる。

 次のサンプル・プログラムは、System名前空間をImportsステートメントで指定している。このため、「System.Console.WriteLine」や「System.Math.PI」は、名前空間部分の「System」を省いて「Console.WriteLine」、「Math.PI」と記述できる。

' imports1.vb

Imports System

Class NameSpaceImports
  Shared Sub Main()
    Console.WriteLine("通常のメソッド呼び出し")
    ' 出力:通常のメソッド呼び出し

    Console.WriteLine("π = {0}", Math.PI)
    ' 出力:π = 3.14159265358979
  End Sub
End Class

' コンパイル方法:vbc imports1.vb
Importsステートメントで名前空間を参照しているサンプル・プログラム(imports1.vb)

 名前空間を指定するこのような機能に加えて、Importsステートメントではクラス名を指定することもできる。これにより、指定したクラスに含まれるメソッドや定数などを、クラス名を省いた形で記述できる。

 次のサンプル・プログラムでは、System.Consoleクラス(これは名前空間まで含めたクラスのフルネーム)とSystem.MathクラスをImportsステートメントにより指定している。このため、WriteLineメソッドや定数「PI」を、クラス名を付けずに記述できる。

' imports2.vb

Imports System.Console
Imports System.Math

Class ClassImports
  Shared Sub Main()
    WriteLine("クラス名を省略して呼び出し")
    ' 出力:クラス名を省略して呼び出し

    WriteLine("π = {0}", PI)
    ' 出力:π = 3.14159265358979
  End Sub
End Class

' コンパイル方法:vbc imports2.vb
Importsステートメントでクラスを参照しているサンプル・プログラム(imports2.vb)

 ただし名前空間の参照と同様に、同じ名前のメソッドを含んでいる2つ以上のクラスをImportsステートメントで指定した場合、そのメソッド名だけを記述すると、どのクラスのメソッドかを特定できずにコンパイルはエラーとなる。例えば、上記のサンプル・プログラムに「Imports System.IO.TextWriter」の1行を追加すると、System.IO.TextWriterクラスにもWriteLineメソッドが含まれているため、System.ConsoleクラスとSystem.IO.TextWriterクラスのどちらのWriteLineメソッドなのかを特定できずにコンパイル・エラーとなる。

 なお、Publicなモジュール内(Moduleステートメント)で定義されているメソッドや定数も、その名前空間をImports文で指定するだけで利用できる。VB.NETのMid関数やMsgBox関数、vbCrLf定数などが直接記述できるのはこのためだ(これらを含んでいるMicrosoft.VisualBasic名前空間はVisual Studio .NETではデフォルトで参照されている)。End of Article

カテゴリ:Visual Basic .NET 処理対象:ステートメント
使用ライブラリ:Consoleクラス(System名前空間)
使用ライブラリ:Mathクラス(System名前空間)
 
この記事と関連性の高い別の.NET TIPS
VB.NETのモジュールの正体は?
コントロールのクラス名からコントロール・オブジェクトを作成するには?
VB.NET固有の関数をC#で使用するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

@IT Special

- PR -

TechTargetジャパン

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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH