Visual Basic 2005 Power Packs 2.0

投稿者: Tomotoshi Sugishita 2007年8月27日 22:11

VB Team Blog のリンクから辿った先よりダウンロードしたものでインストールしてみたけど、
なぜだか何度やってみてもエラーになる・・・。

以下URLよりダウンロードしたものなら正常にインストールできたので、とりあえずこちらから。
http://msdn2.microsoft.com/en-us/vbasic/bb735936.aspx

同じものだと思うんだけど・・・???。

で、今回はVB6のときにあった、Line, Shapeコントロールが追加になっているみたいです。

VS2008のBeta2では、PrintFormのみインストールされていたけど、RTMでは最新のPower Packsが
提供されるんでしょうかね。

タグ: ,

Visual Basic

VB9の型推測

投稿者: Tomotoshi Sugishita 2007年8月27日 22:08

Visual Studio 2008 もベータ2が公開されたということで、次期 Visual Basic 9.0 の新機能をぼちぼちいじっていきたいと思います。

ただし、このエントリは Beta 2 時点のものですので、将来の製品版では仕様が変更される可能性が十分にありますので、あくまでもネタとして・・・。

ということで、初回は、型推測について。

VB9(VS2008)Beta2 では、型の推測機能が備わっています。

従来のコード

Dim testObject As New TestClass()

上記のコードは

Dim testObject As TestClass = New TestClass()

の省略形で、右辺の TestClass 型に定義されたオブジェクト変数に対して、
右辺に記述された TestClass の新規インスタンスが代入されています。
このコードをVB9では以下のように記述することが可能となっています。

Dim testObject = New TestClass()

上記コードでは、従来であれば、Object 型のオブジェクト変数に対して
右辺に記述された TestClass の新規インスタンスが代入されますが、
VB9では振る舞いが違い、コンパイラ(VB のコードパーサー?)が、
右辺の型を推測し、左辺の変数をしかるべき型に定義します。
この例の場合、左辺が返す TestClass 型のインスタンスより、
testObject を TestClass 型で定義します。

では、以下のコードではどうでしょう?

Dim testObject
testObject = New TestClass()

一見すると、初期化式が分割され、2行に渡るように記述し直したように
思えますが、このコードでは最初のステップで Object 型の変数 testObject を
定義し、TestClass の新規インスタンスを代入しており、最初のものとは
まったく振る舞いが違います。


この動作については、値型の変数にも同様に行われるようで、

Dim maybeInteger = 1I '--- Integer

Dim maybeInteger = 1 \ 2 '--- Integer

Dim maybeDouble = 1 / 2 '--- Double

Dim integerValue As Integer = 1
Dim maybeInteger = integerValue '--- Integer

Dim maybeInteger = ReturnInteger() '--- Integer
Function ReturnInteger() As Integer
    Return 1I
End Function

のように、計算式、メソッド等も戻り値のデータ型を判断し、型を決定づけています。

もちろん、コード記述時のバックエンドコンパイラも同様の型推測を行いますので、
型が推測された変数に対しては、プロパティ等の参照も可能となるため、インテリセンスも
正常に動作します。

タイプ数を減らす点ではこの記述は有効ではあるのだけど、可視性/視認性のあるコードを
書くという点では、コードが複雑化すると間違いなく自分を見失う要因ではあるので、
あまりお勧めはできません。

この型推測について、C# 3.0 では、var キーワードを用いていますが、
VB では通常の変数定義と型推測を行う変数定義に同じ Dim キーワードを用いている点が
混乱の要因となるのかなという気がします。

しかしながら、自分は根っからの VB ユーザーであるということで、個人的には Dim キーワードを
用いた方が VB の言語仕様としてはなぜだかしっくりきてしまうのは私だけ・・・?

タグ:

Visual Basic

杉下 朋年

Tomotoshi Sugishita
Tomotoshi Sugishita
< D&UNITE 株式会社 >

Microsoft MVP
Microsoft MVP for Development Platforms
- ASP.NET/IIS Jul.2009 - Jun.2012
Microsoft MVP for Development Tools
- Visual Basic Jul. 2004 - Jun. 2009

 

カレンダー

<<  2月 2012  >>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

投稿一覧をカレンダーで表示