青木「今日から、いよいよ変〇の解説をするぞッ!!!」
田中「ええ、あの、変…なんですか???」
青木「変〇の解説だッ!!!」
田中「変…というと、奥浩哉さんの漫画のアレですか?」
青木「変〇というとそうかもしれないな」
田中「あの、HEN…とかいう漫画のアレですか?」
青木「そうかもな、変〇というと、アレかもな」
田中「でも、あの、Visual Basic と何か関係あるんでしょうか?」
青木「そりゃ、変数が無いと困るだろう、Visual Basic 2010 でプログラミングできないじゃんッ!!!」
田中「…」
青木「何考えてんだ、君は???」
とかいう前振りを考えたのだけど、技術メルマガでは却下することにしました。アレだし。沼正三や天野哲夫の話をしても困るだろうし。でも、澁澤龍彦は良さそうだったり。
というのはさておき、Visual Basic では変数の扱いが意外とややこしくて、主な使い方が以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | ' オブジェクト型 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 文と同時利用が必須ですね。ブロック内の局所変数とかも。