|
こんばんは、YU-TANG です。
細かいことですが、もしかするとその細かいことを気にされている
かもしれないので、念のため。
▼UO3 さん:
> Exitで抜けるタイミングでEnd Withが処理している
> 【参照の解放】がなされるから気にする話ではないということですね。
厳密に言うと、End With が行っているのは単にオブジェクトの修飾補完を
終了するだけです。
それに伴って参照が解放される場合もありますが、されない場合も
あります。なので、End With を通ったからといって、参照の解放を
当てにしない(期待しない)方が無難です。
たとえば、ichinose さんのお書きになった【64192】のサンプルを
お借りするとして。
Sub test2()
With New Scripting.Dictionary ' 事前バインディング(Scripting.Runtime ライブラリに参照設定)
.Add 1, GetClass1
Debug.Print "Break 1"
End With
Debug.Print "Break 2"
End Sub
Sub test3()
With CreateObject("Scripting.Dictionary") ' 実行時バインディング(参照設定不要)
.Add 1, GetClass1
Debug.Print "Break 1"
End With
Debug.Print "Break 2"
End Sub
Function GetClass1() As Class1
Set GetClass1 = New Class1
End Function
test2 と test3 を実行してイミディエイト ウィンドウを確認されると、
なかなか興味深い出力結果が得られると思います。
それでは。
|
|