VB6とVB.NETでのNothingキーワードの違い

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ VB6とVB.NETでのNothingキーワードの違い

VB6でのNothingキーワードは、以下のようにオブジェクトのインスタンス破棄をする場合のみでしたが…

    'インスタンス破棄する。
    Set objClass1 = Nothing

…VB.NETでは、以下の引用のように任意のデータ型の既定値を表すキーワードになりました。

また、変数が参照型である場合は、VB6と同様な感じです。だだし、.NETの場合は即時にインスタンス破棄をしないで、後からガベージコレクタが破棄する。

Nothing

任意のデータ型の既定値を表すキーワードです。変数に Nothing を代入すると、変数の宣言された型に対する既定値が変数に設定されます。型に変数のメンバが含まれている場合は、すべてに既定値が設定されます。次に例を示します。

Public Structure MyStruct

Public Name As String

Public Number As Short

End Structure

Dim S As MyStruct, I As Integer, B As Boolean

S = Nothing ' Sets S.Name to Nothing, S.Number to 0.

I = Nothing ' Sets I to 0.

B = Nothing ' Sets B to False.

変数が参照型である場合、つまりオブジェクト変数である場合は、Nothing を代入すると、どのオブジェクトとも関連付けられていない変数になります。次に例を示します。

Dim MyObject As Object

MyObject = Nothing ' No object currently referred to.

キーワード Nothing をオブジェクト変数に代入すると、その変数はどのオブジェクト インスタンスも参照しなくなります。それまで変数がインスタンスを参照していた場合は、変数に Nothing を設定しても、インスタンス自体が終了することはありません。インスタンスが終了されて、関連付けられていたメモリとシステム リソースが解放されるのは、アクティブな参照が残っていないことをガベージ コレクタが検出した後だけです。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vblr7/html/vakeynothing.asp

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。

人のよいところをどんどん見つけよう