.NET VB データ型

最終更新日

.NET Visual Basicデータ型(数値型、実数型、文字列型、日付型、論理型、オブジェクト型、10進数型)をサンプルコードを交えて解説。

VBのデータ型

VBでは、.NET Frameworkの「共通型システム(CTS)」に基づいたデータが用意されている。

Dim 変数名 As データ型

整数型

数値型には、Byte(バイト)型、Short(ショート)型、Integer(インテジャー)型、Long(ロング)型、SByte型、UShort型、Uinteger型、ULong型がある。

型名符号サイズ値の範囲.NetFramework型既定値
Byte符号なし1バイト0 から 255System.Byte0
Short符号付き2バイト-32,768 から 32,767 System.Int160
Integer符号付き4バイト-2,147,483,648 から 2,147,483,647 System.Int320
Long符号付き8バイト-9,223,372,036,854,775,808 から
9,223,372,036,854,775,807 (9.2…E+18) 
System.Int640L
SByte符号付き1バイト-128 から 127 System.SByte0
UShort符号なし2バイト0~65,535System.Int160
Uinteger符号なし4バイト0 から 4,294,967,295 System.Int320
ULong符号なし8バイト0 から 18,446,744,073,709,551,615 (1.84 x 10 ^ 19 以上) System.Int640

符号付きの型は最上位ビット(符号ビット)が1のものを負の値としている。

使用頻度としては、Integer型が多い。Integer型で値が収まらない場合はLong型を使用する。

Short型、Sbyte型は、メモリー消費を節約できる可能性があります。ただし、実務ではあまり使用したことがない。というもの現在のコンピュータの性能が向上したため、あまり気にするレベルではないため。

【宣言】

Dim 変数名 As Byte
Dim 変数名 As Short
Dim 変数名 As Integer
Dim 変数名 As Long
Dim 変数名 As SByte
Dim 変数名 As UShort
Dim 変数名 As Uinteger
Dim 変数名 As ULong

【サンプルコード】

Dim a As Byte = 1
 Dim b As Short = 1
 Dim c As Integer = 1
 Dim d As Long = 1
 Dim e As SByte = 1
 Dim f As UShort = 1
 Dim g As UInteger = 1
 Dim h As ULong = 1

実数型

実数型は、小数点を含む数を扱う型

浮動小数点は、数を示す仮数部と小数部の位置を示す指数部で小数点を表しています。

型名サイズ値の範囲.NetFramework型既定値
Single4バイト-3.4028235E+38 から -1.401298E-45
 1.401298E-45 から 3.4028235E+38
System.Single0.0F
Double8バイト-1.79769313486231570 E + 308から-4.94065645841246544 E-324
4.94065645841246544 E-324から1.79769313486231570 E + 308
System.Double0.0D

0.1を浮動小数点で表すと、「1.0E-1」となる。これは「1×10のマイナス1乗」

基本的に、Double(ダブル)型を使用します。現在は、コンピューターの性能が向上したため、Single(シングル)型の使用頻度は低い。

まるめ誤差があるため、科学計算やシミュレーション等の誤差が許容できる場合使用する。また、消費税率など一時格納場所としては使用できる。

【宣言】

Dim 変数名 As Single
Dim 変数名 As Double

【サンプルコード】

Dim a As Single = 0.1
Dim b As Double = 0.1
Dim c As Double = 0.2

'コンソール出力
Console.WriteLine("Single型 変数 a サンプル:" & a)
Console.WriteLine("Double型 変数 b サンプル:" & b)
Console.WriteLine("b + cサンプル:" & (b + c))
サンプルコードの実行結果

まるめ誤差
浮動小数点の仕組み上、10進数表記との間で誤差が生じるため、正確に表されない。

上記、実行結果にあるようにDouble型の変数b + cをした場合、期待値としては0.3であるがコンソールに出力してみると誤差が生じている。

10進数型

有効桁数が最大29桁で、丸め誤差が許されない計算に適している。実務的には外貨、売上、入金、消費税などの計算で使用している。

型名サイズ値の範囲.NetFramework型既定値
Decimal16バイト0~+/-79,228,162,514,264,337,593,543,950,335
(小数点なし)(正負の値)
0~+/-7.9228162514264337593543950335
(小数点以下28桁)
0 以外の最小値は +/-0.0000000000000000000000000001 (+/-1E-28)
有効桁数28~29桁
System.Decimal0.0M

Decimal型は、小数部分が1/10、1/100、1/1000が正確に表現できるため、浮動小数点で発生する「まるめ誤差」は発生しない。

そのため、業務系や基幹系、会計等では、よくDecimalが使用される。

パフォーマンスについて
Decimal型は、すべての数値型の中で最も低速です。選択する場合は、精度とパフォーマンスを検討する必要があります。

【宣言】

Dim 変数名 As Decimal

【サンプルコード】

Dim a As Decimal = 1

文字型

文字を扱うためのデータ型で、Char型とString型が用意されている。

型名サイズ値の範囲.NetFramework型既定値
Char2バイト1個のUnicode文字System.Char‘\0’
String可変長0~21憶文字までのUnicode文字System.String

【宣言】

Dim 変数名 As char
Dim 変数名 As String

【例】

Dim a As char = "Z"
Dim b As String = "ABC"

論理型

処理分岐などで主に使用されます。

型名サイズ値の範囲.NetFramework型既定値
Booleanプラットフォームに依存True、またはFalseSystem.Boolean

内部的に専用ビット列でTrueとFalseを区別しています。明示的に初期値をセットしなかった場合は、Falseとなる。

数値型→Boolean型に変換した場合
0→Falseに変換される。
0以外の数値→Trueに変換される。
Boolean→数値型に変換した場合
False→0に変換される。
True→-1に変換される。

【宣言】

Dim 変数名 As boolean

【サンプルコード】

Dim a As boolean = false

日付型(Date)

日付を扱う場合は、Date型のデータ型を使用します。

型名サイズ値の範囲.NetFramework型既定値
Date8バイト西暦1年1月1日午前00:00:00から
西暦9999年12月31日午後11:59:59.9999999
までの日付データ
System.Date

【宣言】

Dim 変数名 As Date

【サンプルコード】

Dim a As Date = #4/1/2020 12:00 PM#
'コンソール出力
Console.WriteLine("DATE型 サンプル:" + a)
日付型のサンプルコード実行結果
サンプルコード実行結果

オブジェクト型(Object)

オブジェクト型は、他のオブジェクトを参照するアドレスを格納するデータ型である。

任意の参照型 (文字列、配列、クラス、またはインターフェイス) を 割り当てることができ、任意の値の型 (数値、BooleanCharDate、構造体、または列挙型) のデータを参照できる。

型名サイズ値の範囲.NetFramework型既定値
Object4バイト(※1すべての型への参照System.Object

※1 4バイトは実データへの参照を格納する領域でこの他に実データのサイズが加算される。

オブジェクト型はコンパイル時に演算及び型のチェックが行われない。

【宣言】

Dim 変数名 As Object

【サンプルコード】

Dim a As Object
Dim b(0,0) As Object
Dim c(1) As Object