データ型

VB 6のデータ型はVisual Basic固有のものでしたが、VB.netのデータ型は.NET Frameworkを通じて他プログラム言語と共用されます。これを共通型システム(CTS)と呼びます。

例えば、VB.netでIntegerというデータ型は、System.Int32構造体のエイリアス(別名)です。従って、Integerの代わりにSystem.Int32と記述しても構いません。下記はどちらも同等です。

Dim x As Integer
Dim y As System.Int32

x.GetType().FullName、y.GetType().FullName、ではどちらも「System.Int32」を返します。

ちなみに、VB.netのIntegerに対応するC#のデータ型は「int」となります。

下記表はVB.netにおけるデータ型と、それに対応する構造体、C#のデータ型をまとめたものです。

 

データ型 構造体のフルネーム 対応するC#のデータ型 サイズ 値の範囲
SByte System.SByte sbyte 1 バイト -128 ~ 127 (符号あり)
Byte System.Byte byte 1 バイト 0 ~ 255 (符号なし)
Short System.Int16 short 2 バイト -32,768 ~ 32,767 (符号あり)
UShort System.UInt16 ushort 2 バイト 0 ~ 65,535 (符号なし)
Integer System.Int32 int 4 バイト -2,147, 483,648 ~ 2,147, 483,647 (符号あり)
UInteger System.Int32 uint 4 バイト 0 ~ 4,294,967,295 (符号なし)
Long System.Int64 long 8 バイト 9,223,372,036,854,775,807 を通じて-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 (符号あり)
ULong System.Int64 ulong 8 バイト 0 ~ 18,446,744,073,709,551,615(符号なし)
Single System.Single float 4 バイト -3.4 × 1038 から +3.4 × 1038
Double System.Double double 8バイト ±5.0 × 10−324 – ±1.7 × 10308
Decimal System.Decimal decimal 16 バイト (-7.9 x 1028 ~ 7.9 x 1028) / (100 ~ 1028)
Boolean System.Boolean bool プラットフォームの実装によって異なる True または False
Date System.DateTime DateTime
(別名なし?)
8 バイト
Char System.Char char 2 バイト 0 ~ 65535 (符号なし)
String System.String string プラットフォームの実装によって異なる ※別途記載

 

VB6でのVarient型について

VB6では、あらゆるものが格納できるVariant型というデータ型が存在しました。

VB6では、変数の宣言時に型を省略した場合はVariant型となります。

VB.NETでは、このVariant型に対応する型はObject型となります。

しかし、VB6ではObject型が別の意味を持っていたことを忘れてはいけません。

VB6でのObject型は、あくまでもオブジェクトを扱うデータ型であり、オブジェクトではないデータを格納するためには使用できませんでした。

一方、VB.NETでは、プリミティブ型も含めてあらゆるものをObject型の変数にセットできます。

VB 6のVariant型は、VB.NETではObject型に置き換わるというルールを覚えると同時に、VB6のObject型とVB.NETのObject型とは機能的に異なることを知っておく必要があります。

参考

データ型の概要