|
.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ではデフォルトで参照されている)。
カテゴリ:Visual Basic .NET 処理対象:ステートメント
使用ライブラリ:Consoleクラス(System名前空間)
使用ライブラリ:Mathクラス(System名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間