代入ステートメント
更新 : 2007 年 11 月
代入ステートメントは代入演算を行います。つまり、次の例のように、代入演算子 (=) の右側の値を左側の要素に格納します。
v = 42
この例の代入ステートメントでは、42 というリテラル値を v 変数に格納しています。
使用できるプログラミング要素
代入演算子の左側に指定するプログラミング要素は、値を受け取って格納できるものにする必要があります。したがって、ReadOnly (Visual Basic) ではない変数またはプロパティを指定するか、配列要素を指定します。代入ステートメントのコンテキストでは、このような要素を左辺値、つまり "左側の値" と呼ぶことがあります。
代入演算子の右側の値は、式によって生成されます。この式は、リテラル、定数、変数、プロパティ、配列要素、他の式、関数呼び出しの任意の組み合わせによって構成されます。次に例を示します。
x = y + z + findResult(3)
この例では、y 変数の値を z 変数の値に加算し、さらに findResult 関数の戻り値を加算しています。その後、この式の合計値を x 変数に格納しています。
代入ステートメントのデータ型
次の例に示すように、代入演算子では、数値だけでなく String 値も代入できます。
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
また、次の例のように Boolean リテラルまたは Boolean 式を使用して、Boolean 値を代入することもできます。
Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.
同様に、Char、Date、または Object データ型のプログラミング要素に適切な値を代入することができます。また、オブジェクト インスタンスを、そのインスタンスの作成元になったクラスとして宣言された要素に代入することもできます。
複合代入ステートメント
複合代入ステートメントは、まず式の演算を実行してから、その結果をプログラミング要素に代入します。次の例では、このような演算子の 1 つである += を使用しています。この演算子は、左側の変数の値に右側の式の値を加算します。
n += 1
この例では、n 変数の値に 1 を加算し、その新しい値を n 変数に格納します。これは、次のステートメントを短縮したものと考えることができます。
n = n + 1
この種類の演算子を使うと、さまざまな複合代入演算を行うことができます。このような演算子の一覧と、それぞれの詳細については、「代入演算子」を参照してください。
既存の文字列の末尾に文字列を追加するには、次の例のように連結代入演算子 (&=) を使うと便利です。
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
代入ステートメントでの型変換
変数、プロパティ、または配列要素に代入する値は、代入先の要素に適したデータ型にする必要があります。一般的には、代入先の要素と同じデータ型の値を生成するよう努力します。しかし、型によっては代入時に別の型に変換できるものもあります。
データ型の変換の詳細については、「Visual Basic における型変換」を参照してください。簡単に説明すると、Visual Basic は特定の型の値を、拡大変換した他の任意の型へと自動的に変換します。拡大変換は実行時に必ず成功する変換であり、データを一切失いません。たとえば、Visual Basic は必要に応じて Integer 値を Double に変換します。Integer は Double へと拡大変換されるからです。詳細については、「拡大変換と縮小変換」を参照してください。
縮小変換 (拡大変換を行わない変換) は、実行時に失敗したりデータを失ったりする可能性があります。縮小変換は型変換関数を使用して明示的に実行できます。また、Option Strict Off を設定するとすべての変換をコンパイラに暗黙的に実行させることができます。詳細については、「暗黙の型変換と明示的な型変換」を参照してください。