Visual Studioで作成できるVB.NETアプリケーションのうち、代表的なものは次の三つです。
- Windowsアプリケーション
- フォーム(Windows Forms)をベースとしたWindowsデスクトップ用のアプリケーションを作ることができる。
- クラスライブラリ
- 単体で実行できるユーザーインターフェイスを持たない、コードベースのクラスライブラリ。 VB.NETだけでなく他の.NET言語からも使用できるライブラリを作ることができる。 (クラスライブラリの作成)
- コンソールアプリケーション
- 文字だけからなるコンソールのみを用いたアプリケーション。 ウィンドウを使用しないコマンドラインアプリケーションのほか、デバッグ、テスト用のツールなどにも用いられる。
この他にも、エディションやバージョンによって作成できるアプリケーションにはいくつか種類があります。 ここでは、上記のコンソールアプリケーションを用いて解説をしていきます。
Hello, world!
まずはじめに、おなじみの「Hello, world!」を表示するコンソールアプリケーションを作成してみることにします。
Visual Studioを使う場合
「ファイル」メニューの「新規作成」から「プロジェクト」を選択します。 現れたダイアログから、「VB.NET」の「コンソールアプリケーション」を選択し、適当なプロジェクト名を入れます。
OKボタンを押すと次のようなソースコードが現れるはずです。
このソースコードの真ん中あたりにコードを追加して次のようにします。
このように入力できたらCtrl + F5キーを押して実行します。 このとき、F5キーだけではデバッグモードでの実行となりプログラムの実行が終わった時点でウィンドウが閉じてしまうので、Ctrlキーも一緒に押してください。 実行すると次のような画面が現れるはずです。
現れたウィンドウの左上に「Hello, world!」と表示されていればこのプログラムは正しく動作しています。
コマンドラインコンパイラ(vbc)を使う場合
コマンドラインでコンパイル・実行する場合は次のようにします。 まず、メモ帳などを使って次のようなソースコードを書き、保存します。 ここではファイル名をhelloworld.vb
とします。
次にこのソースコードをコンパイルします。 DOSプロンプトを開き、次のようなコマンドを入力します。
vbc
はVB.NETのコンパイラで、vbc helloworld.vb
とするとこのファイルをコンパイルして実行可能ファイルhelloworld.exe
を生成します。 生成された実行可能ファイルを実行すると次のように表示されるはずです。
環境変数PATHを設定していない場合はvbcコマンドが見つからないので、以下のコマンドでパスを通してください。 以下は.NET Framework 4.0がインストールされている環境でVB.NETコンパイラのパスを通すコマンドの例です。
MSBuildを使うとコマンドラインでプロジェクトファイルをコンパイルすることもできます。 詳しくはMSBuildを参照してください。
アプリケーションのエントリポイント
どのようなプログラムでも、最初に呼び出される場所というものがあります。 それをエントリポイントといいます。 エントリポイントはC言語などにおけるmain
関数に相当するものです。
このプログラムにおけるエントリポイントは、上から二行目のSub Main()
の部分です。 これはMainプロシージャの宣言部分です。 VB.NETではMainと言う名前のプロシージャがアプリケーションのエントリポイント、つまりプログラムの開始点となります。
Mainプロシージャの形式
Mainプロシージャの形式には数種類ありますが、先の形式は一番単純な形式です。 Mainプロシージャではコマンドライン引数を受けることができ、またエラーなどで終了する場合に通知するエラーコードなどを返すこともできます。 それらの形式を次の表にまとめておきます。
宣言の形式 | 概要 |
---|---|
Sub Main() | コマンドライン引数を受け取らない。 エラーコードを返さない。 |
Function Main() As Integer | コマンドライン引数を受け取らない。 エラーコードを返す。 |
Sub Main(ByVal args() As String) | コマンドライン引数を受け取る。 エラーコードを返さない。 |
Function Main(ByVal args() As String) As Integer | コマンドライン引数を受け取る。 エラーコードを返す。 |
Mainプロシージャ(エントリポイント)はモジュールもしくはクラスのどちらかで宣言することができます。 クラスにMainプロシージャを宣言する場合は、これらの宣言の先頭に共有メソッドであることを表す「Shared」を付加する必要があります。
参考までに、コマンドライン引数を取りエラーコードを返すエントリポイントをクラス内に宣言し、「Hello, world!」を表示するプログラムを記述すると次のようになります。
コンソールと入出力
コンソールアプリケーションにおいて、コンソールへの文字列の表示やキーボードからの入力を受け付けるにはConsoleクラスを使います。
コンソールへの出力 (標準出力)
まず、文字列を表示するには、Console.WriteLineメソッドを使用します。
変数の値を表示したい場合などもConsole.WriteLineメソッドを使うことができます。
改行したい場合は、引数に何も指定せずにConsole.WriteLineメソッドを呼び出します。
さらに、文字列の途中に変数の値などを含めて表示するには次のようにします。
上記の例にあるように、中括弧{ }
で囲まれた部分が、その後に指定されているパラメータに置き換えられて表示されます。 {番号}
とすると、その中の番号の順でパラメータが置き換えられて表示されます。
中括弧{ }
の中に指定する文字列を変えることで0埋めや右寄せなどの指定をすることもできます。 これについては書式指定子で解説しています。
コンソールからの入力 (標準入力)
コンソールから文字列を入力するにはConsole.ReadLineメソッドを使用します。
数値など型を指定した入力を行うことはできないので、そういった場合にはまずConsole.ReadLineメソッドで入力を文字列として受け取り、その後目的の型に変換します。 以下は整数値(Integer型)の値を入力する例です。 Integer.Parseメソッドを使って文字列から整数型に変換しています。
実数値を入力する場合もSingle型を使うことで同様に入力することができます。
型の変換については基本型の変換で解説しています。
標準エラーへの出力
標準エラーへ出力を行う場合は、Console.Errorプロパティのメソッドを使います。 出力先が異なるだけで、使い方はConsole.WriteLineと同様です。 リダイレクトされていない場合は、通常の出力と同様にコンソールウィンドウに表示されます。
標準ストリームの操作
Consoleクラスにはこの他にも標準ストリームに対する様々な操作が用意されています。 より高度な標準入出力の扱い方について詳しくは自プロセスの標準入出力で解説しています。
コマンドライン引数
アプリケーションを起動するときに指定されたコマンドライン引数を取得するには、Mainプロシージャの引数args
を参照します。
引数の名前はargs
でなくてもコマンドライン引数を受けとることはできますが、文字列型配列にする必要があります。
Mainプロシージャで引数args
を受けとるようにしていない場合でも、Environment.GetCommandLineArgsメソッドを呼び出すことでコマンドライン引数を取得することができます。 Environment.GetCommandLineArgsメソッドでは、配列の先頭にアプリケーションのファイル名が入る点に注意してください。
その他、コマンドライン引数の取得方法などについてはプロセス・アセンブリの情報 §.コマンドライン引数でも詳しく解説しています。