コード内の特殊文字 (Visual Basic)

コードで特殊文字 (アルファベットまたは数字以外の文字) を使用することが必要な場合があります。 Visual Basic の文字セットに含まれる区切り文字と特殊文字には、プログラム テキストの整理から、コンパイラやコンパイル済みプログラムが実行するタスクの定義まで、さまざまな用途があります。 実行するオペレーションを指定するのには使用されません。

かっこ

かっこは、SubFunction などのプロシージャを定義するときに使用します。 プロシージャのすべての引数リストをかっこで囲む必要があります。 特に、複雑な式で演算子の既定の優先順位をオーバーライドするために、変数や引数を論理グループに配置する際にもかっこを使用します。 次の例を使って説明します。

Dim a, b, c, d, e As Double
a = 3.2
b = 7.6
c = 2
d = b + c / a
e = (b + c) / a

上記のコードの実行後、d の値は 8.225、e の値は 3 になります。 d の計算では、+ よりも / が優先される既定の優先順位が使用されます。これは、d = b + (c / a) と同じです。 e の計算のかっこは、既定の優先順位をオーバーライドします。

[区切り記号]

区切り文字は、その名前が示すとおり、コードのセクションを区切ります。 Visual Basic では、区切り文字はコロン (:) です。 別々の行ではなく、1 つの行に複数のステートメントを含める場合は、区切り文字を使用します。 これにより、スペースが節約され、コードが読みやすくなります。 次の例は、コロンで区切られた 3 つのステートメントを示しています。

a = 3.2 : b = 7.6 : c = 2

詳細については、「方法:コード内でステートメントを分割および連結する」をご覧ください。

コロン (:) 文字は、ステートメント ラベルの識別にも使用されます。 詳細については、「方法:ステートメントにラベルを付ける」をご覧ください。

連結

& 演算子は、"連結" (文字列の結合) に使用します。 数値を加算する + 演算子と混同しないでください。 数値を操作するときに + 演算子を使用して連結すると、間違った結果を得る可能性があります。 次に例を示します。

var1 = "10.01"
var2 = 11
resultA = var1 + var2
resultB = var1 & var2

上記のコードの実行後、resultA の値は 21.01、resultB の値は "10.0111" になります。

メンバー アクセス演算子

型のメンバーにアクセスするには、型名とメンバー名の間にドット (.) または感嘆符 (!) 演算子を使用します。

ドット (.) 演算子

. 演算子は、クラス、構造体、インターフェイス、または列挙型でメンバー アクセス演算子として使用します。 メンバーには、フィールド、プロパティ、イベント、またはメソッドを指定できます。 次の例を使って説明します。

Dim nextForm As New System.Windows.Forms.Form
' Access Text member (property) of Form class (on nextForm object).
nextForm.Text = "This is the next form"
' Access Close member (method) on nextForm.
nextForm.Close()

感嘆符 (!) 演算子

! 演算子は、ディクショナリ アクセス演算子としてクラスまたはインターフェイスでのみ使用します。 クラスまたはインターフェイスには、単一の String 引数を受け入れる既定のプロパティが必要です。 ! 演算子の直後の識別子は、既定のプロパティに文字列として渡される引数値になります。 次に例を示します。

Public Class hasDefault
  Default Public ReadOnly Property index(ByVal s As String) As Integer
    Get
      Return 32768 + AscW(s)
    End Get
  End Property
End Class
Public Class testHasDefault
  Public Sub compareAccess()
    Dim hD As hasDefault = New hasDefault()
    MsgBox("Traditional access returns " & hD.index("X") & vbCrLf & 
      "Default property access returns " & hD("X") & vbCrLf & 
      "Dictionary access returns " & hD!X)
  End Sub
End Class

MsgBox の 3 つの出力行では、いずれも値 32856 が表示されます。 1 行目では、index プロパティへの従来のアクセスを使用し、2 行目では、indexhasDefault クラスの既定のプロパティであることを利用しています。3 行目では、クラスへのディクショナリ アクセスを使用しています。

! 演算子の 2 番目のオペランドは、二重引用符 (" ") で囲まれていない有効な Visual Basic 識別子である必要があります。 つまり、文字列リテラルや文字列変数は使用できません。 "X" は囲まれた文字列リテラルであるため、MsgBox 呼び出しの最後の行を次のように変更すると、エラーが生成されます。

"Dictionary access returns " & hD!"X")

Note

既定のコレクションへの参照は明示的である必要があります。 特に、遅延バインディング変数で ! 演算子を使用することはできません。

! 文字は、Single 型の文字としても使用されます。

関連項目