アプリ版:「スタンプのみでお礼する」機能のリリースについて

数値とオブジェクトの変数セットはそれぞれ、
Dim num as integer
num = 5

Dim obj as Object
set obj = new From
set obj = Nothing
ですが、

オブジェクトの場合でインスタンスを生成しない、単なる参照?別名?
の場合はNothingは不要でしょうか?

Dim obj as Object
For x = 1 to 10
set obj = Form2 ' newとインスタンスを生成するのではなく、単なる参照
 obj.Caption = str(x) & "回目"
'set obj = nothingは不要?
Next x

A 回答 (1件)

生成したかどうかは、関係ないと思います。




オブジェクトは、「参照カウンタ」と言う情報を持っていて、
何かから参照される(例えば変数に設定されるとか)すると、
このカウンタが+1され、(Nothing等で)参照されなくなると、カウンタが-1されます。
で、カウンタが0になると「誰からも参照されていない」と言う事で、
破棄されます。

昔の古いVB(VB4だかVB5?)で、プロシージャが終了して、
ローカル変数が解放される際に、
この参照カウンタが-1されないと言うバグがあったため(VB6等では直ってます)、
確実にカウンタを-1するための、おまじないとして、明示的に
> set obj = Nothing
を実行する様になりました。

そういう意味で言うと、提示された状況では、
「ループの中で毎回実行する必要は無いにしても、
ループ終了後、1回実行しておいた方が良い」かも・・・
#無くても大丈夫だとは思いますけど・・・
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!