VB2005の基本的事柄

VB Tips And Sample(HOME)(戻る)


VB2005の重要な基本的事柄の備忘録を少しずつまとめていく予定です。



Option Explicit 宣言されていない変数を使用している場合に、コンパイラによってエラーが報告されます。
と、HELPに書かれています。必ず「ON」にしましょう。
Option Strict 暗黙の型変換を制限するための、厳密な型の意味を適用します。
と、HELPに書かれています。これも必ず「ON」にしましょう。
また、ONにしたほうがパフォーマンスが良くなります。

Option Compare Binaryにする。文字の大文字小文字の区別をします。

データ型
参考:Windows Developer Magazine 2006/6 、MSDNなど

CLS=Common Langage Specification .NETフレームワークが提供するクラス名。
型名VBCLSサイズ規定値
バイト型SByteSByte10
短整数型ShortInt1620
整数型IntegerInt3240
長整数型LongInt6480
バイト型ByteByte10
USort型UShortUint1620
Uinteger型UintegerUint3240
Ulong型ULongUint6480
単精度浮動少数点型SingleSingle40
倍精度浮動少数点型DoubleDouble80
10進数型DecimalDecimal160
Char型CharChar2コード0の文字
文字列型StringStringプラットフォームに依存Nothing
日付型DateDatetime80001年1月1日 0:00:00
時間間隔TimeSpan
ブール型BooleanBooleanプッラットフォームに依存False
ObjectObjectObject8(32ビットでは4)Nothing
構造体
ポインタIntPtr32or64
ポインタUIntPtr32or64

注意事項
  • Booleanに数字で値を指定しない。
  • 数値のデータ型で値の範囲を満たしていればIntegerが最速。
  • 浮動小数点はSingleよりDoubleが早い。ただしメモリの消費はSingleが小さい。
  • 金額計算などにはDecimalを使用。
  • Charはリテラル。VB6にはなかった
  • VB2005のStringは固定長不変型文字列。 StringBuilderの使用も考慮すること。
  • 日付指定するときは"#2001/01/01 10:10:10#"
  • リテラルには特に注意!!!

リテラルで注意すべきこと。
Dim Su as Decimal
Su=11
とした場合、11はIntegerとして評価され、Suに入った段階でDecimalに変換される。 ので、 Su=12345678901234567890
はオーバーフローになる。
ので、
Su=12345678901234567890D  と「D」をつける事。

リテラルのテキスト形式規定のデータ型
少数部のない数値Integer2147483647
少数部がなく、Integer型で表すには大きすぎる数値Long2147483648
少数部のある数値Double1.5
二重引用符で囲まれたリテラルString"s"
シャープ記号で囲まれたリテラルDate"01/01/2005 8:32AM"


データ型末尾の型文字
Booleanなし
Byteなし
CharC
Dateなし
DecimalD または @
IntegrI または %
LongL または &
ShortS
SingleF または!
Stringなし
UShortUS
UIntegerUI
ULongUL


データ型の変換は Convertを使用する。
Dim MyString As String = "true"
Dim MyBool As Boolean = Convert.ToBoolean(MyString)
' MyBool has the value of True.



Byte型の配列101作るのに
Dim Mybyte() As Byte = New Byte(100) {}
と宣言するのを見かけます。
因みに{}はコンストラクタ(初期化)している意味らしい。
また
Dim Mybyte() As Byte
ReDim Mybyte(100)
でも同じこと。


アクセシビリティー・いろいろなアクセスレベル

アクセス修飾子 何処で宣言するか(使うか)
 
アクセスレベル
Public プロシージャ意外なら何処でもOK 無制限 継承されようとなにされようとOK。
ペリーに開国させられた日本みたいに開きっぱなしです
Protected クラスの中だけ。要するにクラス専用 派生クラスからはOK。
クラスのインスタンスからは×
Friend プロシージャ意外なら何処でもOK Publicとよく似ているが、こいつで宣言したクラスは継承できなくなります。
要するに「現在のアセンブリ外からはアクセスできない」ということになる。
因みに、クラスのメンバとして派生・継承された場合、アクセス可能です(Publicと同じ)。
Protected Friend クラスの中だけ。要するにクラス専用 派生クラスからはOK。クラスのインスタンスからもOK
Private モジュール・クラス・構造体。
プロシージャでは使用できない。
こいつは全く持って一番奥にいて、アクセスするにその場所に居ることが必要。
クラス内で使用すると、そのクラス内でしかアクセスできない。 箱入り娘です。
Dim クラス・構造体メンバ・モジュールのメンバ・プロシージャ内となっているが
プロシージャ専用と考えておいた方がいいみたい
プロシージャ内だけの寿命です。かつブロック内だけの寿命。
Do
Dim DOint As Int32
Loop
Debug.WriteLine(DOint) DOintは宣言されていないとエラーになる 

VB Tips And Sample(HOME)(戻る)

VB6プログラマーのための入門Visual Basic.NET独習講座
商品の詳細、ご購入はここから
VB6プログラマーのための入門Visual Basic.NET独習講座
意外と知らないことがあり、勉強になります。

しかし、残念ながらAmazonには中古本(高い!)しかないようです。
とてもいい本なのに残念。
図書館で探すのも手です。