|
|
連載
プロフェッショナルVB.NETプログラミング
―― VB 6プログラマーのためのVB.NET入門 ――
第30回 残されたいくつかのトピック(その1)
(株)ピーデー
川俣 晶
2002/12/21
|
型文字と新しいデータ型
BASIC言語の初期の時代には、データ型を識別するために、特定の記号を使用している場合があった。例えば文字列型はドル記号($)、整数型はパーセント記号(%)といったルールを決めて、変数の名前などの後ろに付けた。この名残がいまでも残っていて、記号が使用できる。VB 6(Visual Basic 6.0)で以下のようなプログラム・コードを記述しても問題なく動作する。
1: Private Sub Form_Load()
2: Dim i As Integer
3: i% = 123
4: Debug.Print i
5: Dim l As Long
6: l& = 123&
7: Debug.Print l
8: Dim d As Currency
9: d@ = 123@
10: Debug.Print d
11: Dim s As Single
12: s! = 123!
13: Debug.Print s
14: Dim du As Double
15: du# = 123#
16: Debug.Print du
17: Dim st As String
18: st$ = "123"
19: Debug.Print st
20: End Sub
|
|
「$」や「%」などの記号文字の付いた変数を使用したVB 6のサンプル・プログラム1 |
これを実行すると以下のようになる。
1: 123
2: 123
3: 123
4: 123
5: 123
6: 123
|
|
サンプル・プログラム1の実行結果 |
この機能は、VB.NET(Visual Basic .NET)にも継承されている。だが、VB.NETでは、新しいデータ型が増えている。これらのデータ型に対応する記号文字は存在するのだろうか? 以下は、それを踏まえてVB.NETで実行可能な形に書き換えたサンプル・プログラムである。
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim i As Integer
3: i% = 123
4: Trace.WriteLine(i)
5: Dim l As Long
6: l& = 123&
7: Trace.WriteLine(l)
8: Dim d As Decimal
9: d@ = 123@
10: Trace.WriteLine(d)
11: Dim s As Single
12: s! = 123.0!
13: Trace.WriteLine(s)
14: Dim du As Double
15: du# = 123.0#
16: Trace.WriteLine(du)
17: Dim st As String
18: st$ = "123"
19: Trace.WriteLine(st)
20: Dim b As Byte
21: b = 123
22: Trace.WriteLine(b)
23: Dim sh As Short
24: sh = 123
25: Trace.WriteLine(sh)
26: End Sub
|
|
サンプル・プログラム1をVB.NETTで書き換えたサンプル・プログラム2 |
これを実行すると以下のようになる。
1: 123
2: 123
3: 123
4: 123
5: 123
6: 123
7: 123
8: 123
|
|
サンプル・プログラム2の実行結果 |
まず、VB 6のCurrency型がなくなり、VB.NETではDecimal型に取って代わったことに注目してみよう。VB 6でCurrency型に対応していた「@」記号は、VB.NETではDecimal型を表現するものに変化している。しかし、もともとVB 6に存在しなかったShort型には対応する記号文字はない。VB 6にもあったByte型にも対応する記号文字もない。
記号を入力する代わりに、データ型名のフルスペルを書き込むのは面倒に思えるかもしれないが、記号文字を使うのはあくまで互換のために用意された機能であって、フルスペルでデータ型名を書く方がお勧めである。
整数リテラルと浮動小数点リテラル
プログラム・コード中で定数を記述する際、しばしば、定数のデータ型を明示する必要に迫られる場合がある。そのような場合、VB 6では、上で述べた記号文字を定数に付加するといった方法で、データ型を明示した。しかし、記号文字が用意されないデータ型も生まれてきたので、何か代わりの方法が必要になってきた。VB.NETでは新しい方法で定数のデータ型を明示することができる。以下はそれを使用したサンプル・プログラムである。
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim a As Object
3: a = 123
4: Trace.WriteLine(a.GetType().FullName)
5: a = 123%
6: Trace.WriteLine(a.GetType().FullName)
7: a = 123&
8: Trace.WriteLine(a.GetType().FullName)
9: a = 123S
10: Trace.WriteLine(a.GetType().FullName)
11: a = 123I
12: Trace.WriteLine(a.GetType().FullName)
13: a = 123L
14: Trace.WriteLine(a.GetType().FullName)
15:
16: a = 1.23
17: Trace.WriteLine(a.GetType().FullName)
18: a = 1.23!
19: Trace.WriteLine(a.GetType().FullName)
20: a = 1.23#
21: Trace.WriteLine(a.GetType().FullName)
22: a = 1.23@
23: Trace.WriteLine(a.GetType().FullName)
24: a = 1.23F
25: Trace.WriteLine(a.GetType().FullName)
26: a = 1.23R
27: Trace.WriteLine(a.GetType().FullName)
28: a = 1.23D
29: Trace.WriteLine(a.GetType().FullName)
30: End Sub
|
|
定数のデータ型を明示したVB.NETのサンプル・プログラム3 |
これを実行すると以下のようになる。
1: System.Int32
2: System.Int32
3: System.Int64
4: System.Int16
5: System.Int32
6: System.Int64
7: System.Double
8: System.Single
9: System.Double
10: System.Decimal
11: System.Single
12: System.Double
13: System.Decimal
|
|
サンプル・プログラム3の実行結果 |
このサンプル・プログラムの5、7、18、20、22行目は、従来どおりの記号を用いた記述方法を使ったものである。それに対して、9、11、13、24、26、28行目は、新しい記述方法である。数値の後にアルファベット1文字を付加して、データ型を明示している。例えば5行目と11行目を見比べると分かるだろう。同じInteger型(表示結果はSystem.Int32)を示す数値を記述するために、古い「%」記号を付ける方法と、新しい「I」を付ける方法をそれぞれ使用している。後者の方法の方が、VB.NETではお勧めである。実際、9行目のShort型に対応する記号文字はなく、記号文字で指定したくてもできないことになる。
Insider.NET 記事ランキング
本日
月間