VB基本まとめ~変数編~

今後の記事を書く前に初歩の初歩、VB.Net基本的な情報をまとめていこうと思います。
まずは変数あたりから。

#基本的な変数
##変数の種類

###【整数型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|SByte|1Byte|0|なし|なし|-128 ～ 127|
|Byte|1Byte|0|なし|なし|0 ～ 255|
|Short|2Byte|0|S|なし|-32,768 ～ 32,767|
|UShort|2Byte|0|US|なし|0 ～ 65,535|
|Integer|4Byte|0|I|%|-2,147,483,648 ～ 2,147,483,647|
|UInteger|4Byte|0|UI|なし|0 ～ 4,294,967,295|
|Long|8Byte|0|L|&|-9,223,372,036,854,775,808 ～ 9,223,372,036,854,775,807|
|ULong|8Byte|0|UL|なし|0 ～ 18,446,744,073,709,551,615|

###【浮動小数型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|Single|4Byte|0|F|!|±3.40282347E+38|
|Double|8Byte|0|R|#|±1.7976931348623157E+308|

###【10進型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|Decimal|16Byte|0|D|@|±79,228,162,514,264,337,593,543,950,335|
※少数部28桁まで格納可能。その場合、整数部が小数部の桁数分少なくなる
　⇒最大少数桁時の範囲：±7.9228162514264337593543950335

###【論理型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|Boolean|-|False|なし|なし|True/False|

###【日付型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|Date|8Byte|0001/01/01 00:00:00|なし|なし|0001/01/01 00:00:00 ～ 9999/12/31 23:59:59|


###【文字・文字列型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|Char|2Byte|0|C|なし|0 ～ 65535|
|String|-|""|なし|なし|0 ～ 約20億文字(Unicode)|


###【オブジェクト型】
| 型|サイズ|規定値|リテラルの型文字|識別子の型文字|格納可能な範囲|
|:--|--:|--:|:--|:--|:--|
|Object|8Byte|Nothing|なし|なし|すべての型を格納可能|

##リテラルの型文字
```VB
Dim S = 1S      '*** Short
Dim US = 1US    '*** UShort
Dim I = 1I      '*** Integer
Dim UI = 1UI    '*** UInteger
Dim L = 1L      '*** Long
Dim UL = 1UL    '*** ULong

Dim F = 1.0F    '*** Single
Dim R = 1.0R    '*** Double
Dim D = 1D      '*** Decimal

Dim C = " "c    '*** Char
```

##識別子の型文字
```VB
Dim I%      '*** Integer
Dim L&      '*** Long

Dim F!      '*** Single
Dim R#      '*** Double
Dim D@      '*** Decimal

Dim S$      '*** String
```


##既定のリテラル型
```VB
Dim I = 2147483647  '*** Integer
Dim L = 2147483648  '*** Long

Dim R = 1.1         '*** Double

Dim S = ""          '*** String
Dim DT = #2019/5/9# '*** Date
```

##10進数以外のリテラル
|基数|プレフィクス|有効文字|
|:--|:--|:--|
|2進数|&B|0,1|
|8進数|&O|0~7|
|16進数|&H|0~9,A~F|

```VB
Dim B = &B1001              '*** 2進数
Dim O = &O1234567           '*** 8進数
Dim H = &H123456789ABCDEF   '*** 16進数

'*** リテラル識別子(※整数型のみ)との組み合わせも可能
Dim HI = &HFFFFI    '*** Integer
Dim HUI = &HFFFFUI  '*** UInteger
Dim HS = &HFFFFS    '*** Short

'*** VB2017より、「_」で区切る事も可能
Dim H2017 = &HFFFF_FFFF
```

#型変換

##型変換1：データ型変換関数
|関数名|戻り値|使用例|
|:--|:--|:--|
|CObj|Object|CObj(1)|
|CBool|Boolean|CBool("True")|
|CByte|Byte|CByte("1")|
|CSByte|SByte|CSByte("1")|
|CShort|Short|CShort("1")|
|CUShort|UShort|CUShort("1")|
|CInt|Integer|CInt("1")|
|CUInt|UInteger|CUInt("1")|
|CLng|Long|CLng("1")|
|CULng|ULong|CULng("1")|
|CSng|Single|CSng("1")|
|CDbl|Double|CDbl("1")|
|CDec|Decimal|CDec("1")|
|CChar|Char|CChar("1")|
|CStr|String|CStr(1)|
|CDate|Date|CDate("2019/12/31")|

##型変換2：CType・DirectCast・TryCast
|関数名|戻り値|使用例|備考|
|:--|:--|:--|:--|
|CType|任意の型|CType("2019/12/31", Date)|自由度の高い型変換|
|DirectCast|任意の型|DirectCast(New Date, Date)|変換パフォーマンスは良いが、厳密に型が一致している必要がある|
|TryCast|参照型|TryCast(Obj, Date)|変換失敗時はNothingが返る|

##型変換3：数値を文字列に変換
変数.ToString メソッドを使用

##型変換4：Parse系メソッドを使用した変換
型.Parse等

```VB
Dim S = "12345"
Dim I1 = Integer.Parse(S)  '*** SがNothing・変換できない値の場合例外発生
Dim I2 As Integer
Integer.TryParse(S, I2)    '*** Sが変換できない値でも例外は発生しない
```