Visual Basic の変数を解説するよ(技術メルマガ編)のメモ

青木「今日から、いよいよ変〇の解説をするぞッ!!!」
田中「ええ、あの、変…なんですか???」
青木「変〇の解説だッ!!!」
田中「変…というと、奥浩哉さんの漫画のアレですか?」
青木「変〇というとそうかもしれないな」
田中「あの、HEN…とかいう漫画のアレですか?」
青木「そうかもな、変〇というと、アレかもな」
田中「でも、あの、Visual Basic と何か関係あるんでしょうか?」
青木「そりゃ、変数が無いと困るだろう、Visual Basic 2010 でプログラミングできないじゃんッ!!!」
田中「…」
青木「何考えてんだ、君は???」

とかいう前振りを考えたのだけど、技術メルマガでは却下することにしました。アレだし。沼正三や天野哲夫の話をしても困るだろうし。でも、澁澤龍彦は良さそうだったり。

というのはさておき、Visual Basic では変数の扱いが意外とややこしくて、主な使い方が以下の通り。

' オブジェクト型
Dim obj As Object
' オブジェクト型(型指定をしない)
Dim obj2

' 数値型
Dim num As Integer
' 文字列型
Dim str As String

' 配列型
Dim array() As Integer
Dim array2 As Integer()

' クラスオブジェクト
Dim cn As SqlConnection
' コンストラクタを利用
Dim cnx As New SqlConnection

' コレクション
Dim lst As List(Of Integer)

' 推論
Dim var = From n In lst Select n

' 同時に初期設定する
Dim n1 As Integer = 10
' 同時に初期設定する(推論を利用)
Dim n2 = 10

Dim cn1 = New SqlConnection
Dim cn2 As Object
' オブジェクト型に代入
cn2 = cn1
Dim cn3 As SqlConnection
' オブジェクト型から代入
cn3 = cn2
' 明示的にキャスト(CType)を使って代入
cn3 = CType(cn2, SqlConnection)

' for で使う一時変数
For i As Integer = 1 To 10

Next

' for each で使う一時変数
For Each n In lst

Next

' リソースを解放させる
Using bmp As New Bitmap

End Using

If str = "" Then
	Dim temp As String = ""
End If
' ここでは使えない
' temp = ""

VB6.0 の頃に object 型だったり、Variant 型だったりしたものが、初期値で型推論に変わったので、このあたりが微妙に異なっていたり、string 型から object 型にキャストをするときに暗黙のキャストが定義されていたり。

関連としては、For 文と For Each 文と同時利用が必須ですね。ブロック内の局所変数とかも。

カテゴリー: VB, 技術メルマガ パーマリンク