方法 : 値の変わらない変数を作成する
更新 : 2007 年 11 月
値の変わらない変数という概念は、一見矛盾しているように見えます。しかし、場合によっては定数を使用できないこともあり、そのようなときに固定値を持つ変数を使用すると便利です。このような場合に、ReadOnly (Visual Basic) キーワードを使用してメンバ変数を定義できます。
次のような場合は、Const ステートメント (Visual Basic) を使用して定数を宣言し、値を割り当てることはできません。
Const ステートメントが、使用するデータ型を受け付けない。
コンパイル時には値がわからない。
コンパイル時に定数値を計算できない。
値の変わらない変数を作成するには
モジュール レベルで、Dim ステートメント (Visual Basic) を指定してメンバ変数を宣言し、ReadOnly (Visual Basic) キーワードを含めます。
Dim ReadOnly timeStarted
メンバ変数に対してのみ ReadOnly を指定します。これは、プロシージャ外部で、モジュール レベルの変数を定義することが必要であることを意味します。
コンパイル時に単一のステートメントで値を計算できる場合は、Dim ステートメントで初期化の句を指定します。As 句の後ろに等号 (=) を付け、式を続けます。コンパイラでこの式を定数値に評価できることを確認します。
Dim ReadOnly timeStarted As Date = Now
ReadOnly 変数に値を割り当てることができるのは 1 回だけです。この値を割り当てた後は、いずれのコードもこの値を変更することはできません。
コンパイル時に値がわからない、またはコンパイル時に単一ステートメントではこれを計算できない場合は、実行時にコンストラクタ内で値を割り当てることができます。実行時に値を割り当てるには、クラス レベルまたは構造体レベルで ReadOnly 変数を宣言する必要があります。そのクラスまたは構造体のコンストラクタ内では、変数の固定値を計算し、コンストラクタから返される前にその値を変数に割り当てます。