掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Newでインスタンスの生成を複数回すると、どのようになりますか? (ID:100977)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
# 既に回答が付いているけれどもしゃしゃり出てみたり。 > 以下のようなプログラムを書いた場合に Set ステートメントが抜けているかも。 > 私としては【2】をする前にNothingするべきではないかと > 考えているのですが、 基本的には不要です。 ライブラリ側でコレクション管理されている物(VB.Forms, DAO.Recordsets 等)などは 特定条件下においては、意図的に代入した方が良い場合もあるにはあるのですが、 少なくとも今回のような場合においては、無理に Nothing を代入する必要はありません。 とはいえ、そこで Nothing を代入したとて副作用があるわけでも無いので、 代入したとしても問題はありません。 > 彼が言うには【2】の時点でクラスが初期化されているので > 問題ないというのです。 「初期化」の意図にもよりますが、次のインスタンスを再生成せねばならないなら、 現状のコードで問題無いでしょう。前のインスタンスの破棄は自動的に行われますので。 なお、最後の Nothing 代入も実際には不要です。それがモジュールレベル変数であるならば オブジェクトの早期解放という意味を持ちますが、プロシージャレベルの変数の場合、 プロシージャから抜けるタイミングで、自動的に参照が破棄されるためです。 > 【2】の時点でどのようになっているか > 教えて頂けませんか? クラス側に以下のような処理を埋め込んでおき、ステップ実行してみると良いでしょう。 Private Sub Class_Initialize() Debug.Print "==> 生成 "; TypeName(Me); " : "; ObjPtr(Me) End Sub Private Sub Class_Terminate() Debug.Print "<== 破棄 "; TypeName(Me); " : "; ObjPtr(Me) End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.